»ö« 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:06 llfourn left 00:08 LeCamarade joined 00:09 Actualeyes left
AlexDaniel m: my %h is default(%h<foo>) 00:13
camelia rakudo-moar 67aeef: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot use variable %h in declaration to initialize itself␤at <tmp>:1␤------> 3my %h is default(%7⏏5h<foo>)␤ expecting any of:␤ term␤»
AlexDaniel okay, so what's up with RT #121807 00:15
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121807
AlexDaniel I'm staring at that bug report and it makes no sense 00:16
m: my %z; %z<foo> = 42; my %h is default(%z<foo>); say %h<abc>
camelia rakudo-moar 67aeef: OUTPUT«(Any)␤»
AlexDaniel the whole idea of putting something complex in default(…) is insane considering how is default works 00:17
so it's not that %h<foo> doesn't work, nothing works there 00:18
or am I missing something?
and arguably previous error message made more sense 00:19
geekosaur likely needs to be compile time
m: BEGIN my %z; BEGIN %z<foo> = 42; my %h is default(%z<foo>); say %h<abc> 00:20
camelia rakudo-moar 67aeef: OUTPUT«42␤»
AlexDaniel yea, that works, sure
but the ticket talks about putting %h there
which is not going to work ever 00:21
well, with the current functionality at least
00:21 llfourn joined
AlexDaniel thing is, I'm half way through reverting the results of RT #125371 00:21
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=125371
AlexDaniel and now this!
geekosaur the ticket is complaining that "Variable not declared" is LTA for the user, who can see it right there and does not consider compile vs. run time 00:22
00:22 jjido left
AlexDaniel okay, then we can probably reopen it, yes 00:22
perhaps the error message can say that 「is default(…)」 is for compile-time stuff only 00:23
geekosaur yes, that was my thought, the message should at least indicate that the name and value needs to be known *at compile time*
00:24 jraglin left
geekosaur but even that is arguably a little unclear because without thinking deeply one would expect a `my` to have a compile time effect 00:24
00:24 jraglin joined
geekosaur so explaining what's actually up succinctly might prove ... interesting 00:24
AlexDaniel yea… definitely some room for improvement :) 00:25
00:26 jraglin left 00:37 Actualeyes joined 00:38 rindolf left 00:39 aborazmeh joined, aborazmeh left, aborazmeh joined 00:40 Sgeo joined 00:51 BenGoldberg joined, pyrimidine joined 00:56 pyrimidine left 00:57 cdg joined 01:02 aborazmeh left
samcv AlexDaniel++ on that 01:11
making the error mention compile time
like make sure all variables used exist before compile time by putting them in a BEGIN block
or something
AlexDaniel well, it's RT #121807 now, feel free to work on it 01:17
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121807
AlexDaniel I don't know from the top of my head where this error message should go
samcv idk maybe in the optimizer 01:18
01:19 cdg left
samcv but i'm not an expert. but the optimizer checks if the symbol exists, then could also check whether it was is default or something 01:19
or uhm maybe it's in the place that handles the `is` things
though looking at optimizer i see this comment 01:26
nless $!symbols.is_lexical_declared($op.name) {
# Shouldn't be able to hit this due to checks done in the parse
# phase, but this will catch anything that sneaks past it.
so idk 1569 in Optimizer.nqp could always try pkutting something in there and see if it ends up getting there. otherwise check out the other place 01:27
timotimo RFC: we should agree on one kind of "speed improvement of 2x" in commit messages and such 01:47
i.e. there's a line in the changelog that says "between 0.1x [...] faster"
whereas i believe some other lines mean the actual number rather than the number + 1.0
and now i'm going to bed :) 01:48
AlexDaniel yes
timotimo i wish our measurement stuff was a bit more automized, such that we can always point to some place (maybe even a gist in a specific file-layout?) where you can see the difference 01:49
maybe benchable is the key here
though sometimes you need a bit more than just a single irc line 01:50
01:51 beginner_guy left
AlexDaniel well, one of the issues is that the code for measurements is not published 01:51
timotimo yup
we always just time perl6 -e '...' a bunch of times
and then discard the results after we extract an approximate "n times faster" number 01:52
good night! 01:53
AlexDaniel night!
01:55 obfusk_ joined, obfusk left 02:00 astj_ joined, sufrostico left, astj left, eliasr left
samcv i agre timotimo 02:02
02:07 mls left 02:13 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 02:22 ggoebel left
AlexDaniel OK I'll finish this thing tomorrow… 02:28
02:32 AlexDaniel left 02:35 ggoebel joined 02:38 pyrimidine joined 02:40 ssotka left 02:41 gdonald joined 02:43 agentzh joined 02:45 ilbot3 left 02:48 ilbot3 joined, ChanServ sets mode: +v ilbot3 02:50 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 03:01 mls joined 03:03 bwisti joined 03:23 lizmat_ left 03:25 lizmat joined 03:30 deepbook5broo joined, deepbook5broo left 03:34 noganex_ joined 03:36 pyrimidine left 03:37 pyrimidine joined, noganex left 03:42 pyrimidine left 03:44 ssotka joined 04:04 adu joined 04:06 jraglin joined 04:07 pyrimidine joined 04:11 cpage_ left 04:12 pyrimidine left 04:15 cdg joined 04:18 cdg left, labster joined 04:21 falafel joined 04:27 astj_ left 04:28 astj joined, lowecase joined, lowecase left 04:29 Cabanoss- joined 04:30 lowecase joined, lowecase left 04:32 astj left 04:33 Cabanossi left, Cabanoss- is now known as Cabanossi 04:35 MasterDuke left 04:39 MasterDuke joined 04:42 kybr left 04:44 cpage_ joined 05:00 astj joined 05:07 parv joined 05:15 khw left 05:30 adu left 05:31 wamba joined 05:39 xtreak joined 05:56 ChoHag left 06:05 llfourn left 06:08 skids left 06:09 pyrimidine joined 06:13 falafel left 06:14 pyrimidine left 06:16 cpage left 06:18 cpage__ joined 06:19 cpage_ left, cpage__ is now known as cpage_ 06:32 llfourn joined, llfourn left 06:38 pyrimidine joined, Ben_Goldberg joined 06:39 BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 06:44 pyrimidine left 06:47 eroux joined 06:50 RabidGravy joined 06:53 ufobat joined 06:56 darutoko joined 07:04 eroux left 07:05 wamba left 07:09 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 07:11 BenGoldberg left 07:15 pyrimidine joined, ssotka left 07:19 xtreak left 07:20 pyrimidine left 07:48 bjz joined 07:51 abraxxa joined 07:55 abraxxa left 08:06 bhm_ is now known as bhm 08:10 parv left 08:14 abraxxa joined 08:22 wamba joined 08:29 z-b is now known as zb 08:31 brrt joined 08:34 TEttinger left 08:39 zakharyas joined, awwaiid left 08:49 xtreak joined 09:01 mr_ron left 09:11 petercommand is now known as [Q_Q] 09:14 lukaramu joined, [Q_Q] is now known as petercommand 09:15 petercommand left, petercommand joined 09:16 pyrimidine joined 09:20 pyrimidine left 09:24 rindolf joined 09:30 geekosaur left 09:32 geekosaur joined 09:42 ChoHag joined 10:01 wamba left 10:21 wamba joined 10:27 wamba left 10:29 wamba joined, bjz left 10:33 geekosaur left 10:34 geekosaur joined
brrt why are things so awefully quiet up here 10:43
jnthn Friday. Everyone too tired to even type. :P 10:45
DrForr Everyone's partying down. 10:47
jnthn Bah, I'm writing Java. That's a lot of typing and a lot of typing. :P
And doens't feel like partying at all P
:P
ilmari java code is 60% class names by volume 10:51
jnthn looks at the code and suspects that might actually be right 10:53
Thankfully, the large codebase I need to deal with is well designed/implemented. 10:55
So it's not a particularly painful experience. :)
11:03 pyrimidine joined 11:06 bjz joined
arnsholt jnthn: Incidentally, I the Java sixmodel implementation is my go-to example of Java code that is not riddled with MethodInvocationBeanFactory and the like =) 11:08
11:08 pyrimidine left 11:13 geekosaur left 11:14 geekosaur joined 11:22 Ven joined 11:23 bjz left 11:24 gdonald left, gdonald joined, bjz_ joined 11:46 Ven left 11:47 jraglin left 11:50 Ven joined 11:53 AlexDaniel joined 11:56 eliasr joined 11:57 Ven left 12:05 geekosaur left 12:06 geekosaur joined 12:07 xtreak left
AlexDaniel ahhhhhhh dang it!! 12:09
RT #87034
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=87034
timotimo 2011 :D 12:10
AlexDaniel “this is what I expect” 12:11
「my @foo = 42, @foo; say @foo」 is ok 12:12
but 「my @foo := 42, @foo; say @foo」 ? 12:13
12:13 wamba left
AlexDaniel locally I get (42 (Mu)) for the last one 12:14
timotimo this is a good-ol' can of worms :) 12:15
12:16 pyrimidine joined 12:17 faraco joined 12:18 labster left 12:19 bjz joined 12:20 andrzejku left, itaipu joined, bjz_ left 12:21 pyrimidine left
Geth doc: 6ca40de9c7 | (Tom Browder)++ | doc/Language/control.pod6
improve wording
12:23
ilmari tbrowder: freudian slip? "execunted" 12:25
tbrowder ugh... 12:26
AlexDaniel c: 3754356d8e^ my @foo := 1..3, (@foo Z+ 100) 12:28
committable6 AlexDaniel, ¦«3754356d8e^»:
AlexDaniel c: 3754356d8e^ my @foo := 1..3, (@foo Z+ 100); say @foo
oops…
Geth doc: 3a81880c72 | (Tom Browder)++ | doc/Language/control.pod6
fix typo
12:28 bjz left 12:29 committable6 left, xtreak joined 12:30 committable6 joined, ChanServ sets mode: +v committable6
tbrowder ilmari: ++, you are first person i've heard from since that changed yesterday 12:30
ilmari tbrowder: eh? it was in that commit Geth just reported (3a81880c72) 12:31
uh, 6ca40de9c7
tbrowder but that whole when chunk still needs more love
AlexDaniel c: 3754356d8e^ my @foo := 1..3, (@foo Z+ 100); say @foo[^10] 12:33
committable6 AlexDaniel, ¦«3754356d8e^»: Use of Nil in numeric context in block <unit> at /tmp/MouvyRrLde:1␤1 2 3 100 Nil Nil
AlexDaniel c: 3754356d8e my @foo := 1..3, (@foo Z+ 100); say @foo[^10]
committable6 AlexDaniel, gist.github.com/2eb6627efe055a7cc3...044eb4c0bb
AlexDaniel c: 3754356d8e my @foo := 1..3, (@::foo Z+ 100); say @foo[^10]
committable6 AlexDaniel, ¦«3754356»: Use of Nil in numeric context in block <unit> at /tmp/UcqDtnL1KH:1␤1 2 3 100 Nil Nil
AlexDaniel c: HEAD my @foo := 1..3, (@::foo Z+ 100); say @foo[^10]
12:33 bjz joined
committable6 AlexDaniel, ¦«HEAD»: No such method 'iterator' for invocant of type 'Mu'␤ in block <unit> at /tmp/AHeiPmn2aA line 1␤ «exit code = 1» 12:33
timotimo tbrowder: do you think it'd be wise to mention "smart matching" in the "default use of $_" part about when?
AlexDaniel c: HEAD my @foo := @::foo; say @foo[^10] 12:34
committable6 AlexDaniel, ¦«HEAD»: Type check failed in binding; expected Positional but got Mu (Mu)␤ in block <unit> at /tmp/tXA40ekPBu line 1␤ «exit code = 1»
AlexDaniel c: HEAD my @foo := 42, @::foo; say @foo[^10]
committable6 AlexDaniel, ¦«HEAD»: (42 (Mu) Nil Nil Nil Nil Nil Nil Nil Nil)
tbrowder ach! ilmari: you're correct--i did those few changes online with an ipad and that kind of side error is easy to back due to slow feedback 12:35
AlexDaniel: that was suggested by gfldex and i think it does belong there, but i want to move it to a better place 12:36
AlexDaniel ?
me? 12:37
tbrowder i'm not sure that feature is clearly stated anywhere else 12:38
sorry, AD, i meant timotimo:
12:38 araraloren joined
timotimo it hopefully is! 12:39
it's very powerful and it's everywhere
hm. it has a very short section in language/operators 12:40
tbrowder well, a reference to that for the when discussion would be useful, maybe in addition to the few wordss... 12:41
12:42 sena_kun joined, andrzejku joined
tbrowder maybe treat the X in the examples with some words about "boolean context" 12:43
for instance i noticed while experimenting that a standalone when block with an undefined $_ requires a complete boolean expresssion: 12:46
timotimo docs.perl6.org/syntax/default%20when.html - wait, is this the text you wrote? 12:47
it doesn't match up with what i remember from the commits/diffs
huh 12:48
there has already been a section on when before you started writing it?
that's weird
tbrowder m: my $a=1; when $a {say 'a'}; when so $a {say 'a'} 12:49
camelia rakudo-moar c2349d: OUTPUT«a␤»
timotimo m: say 1 ~~ Any 12:50
camelia rakudo-moar c2349d: OUTPUT«True␤»
timotimo m: say Any ~~ 1
camelia rakudo-moar c2349d: OUTPUT«False␤»
timotimo m: say Any ~~ True
camelia rakudo-moar c2349d: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at <tmp>:1␤ ------> 3say Any ~~ 7⏏5True␤True␤»
tbrowder timotimo: i made a large change yesterday including moving the when chunk
timotimo right
the page i was looking at was already built from your commit 27 minutes ago 12:51
the one before the "fix typo" one
do you see the other section about "when" on that page?
andrzejku today I supported Perl6 :D
brrt by the way, ugexe++ for zef 12:52
it works pretty well
timotimo yeah, it's good
tbrowder m: my $a=1; when $a {say 'a'}
camelia ( no output )
DrForr andrzejku: Yay, what did you do? 12:53
tbrowder timotimo: see above, that needs explaining imho
andrzejku DrForr, bought moritz book :P 12:54
moritz andrzejku: thanks!
andrzejku good source to learn :)
moritz I already got an email from leanpub telling me it was purchased, but of course not by whom
andrzejku moritz, are you planning to add more exercises when book would be finished? 12:55
that's only 7 exercises now and 40% book
so
14 in all?
moritz andrzejku: more suggestions for exploration than excerises
and yes, I can add more if there's interest
andrzejku nice, I would read it soon after work 12:56
keep writing :)
12:58 Actualeyes left
moritz speakinig of which, I could publish the next chapter 12:59
AlexDaniel m: Test; is-deeply (42, Mu), (42, Mu)
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤ Test used at line 1␤Undeclared routine:␤ is-deeply used at line 1␤␤»
AlexDaniel m: use Test; is-deeply (42, Mu), (42, Mu)
camelia rakudo-moar c2349d: OUTPUT«Type check failed in binding to <anon>; expected Any but got Mu (Mu)␤ in sub _is_deeply at /home/camelia/rakudo-m-inst-1/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 579␤ in sub is-deeply at /home/camelia/rakudo-m-inst-1/s…»
AlexDaniel mc: use Test; is-deeply (42, Mu), (42, Mu)
committable6 AlexDaniel, gist.github.com/ecdd8eeba58c233a68...788a499952
AlexDaniel so how do I test it then? 13:00
is it a bug?
13:00 xtreak left
timotimo tbrowder: you mean the thing where you can put "so" in front of something? yeah, a few words would be good for that. the mechanism is that smart match against True will always succeed and smart match against False will always afil 13:01
fail*
so by putting something after the "when" that will evaluate to True or to False, you can trigger that specific block when you want it
13:03 MARTIMM joined
tbrowder m: when Any {.say} 13:05
camelia rakudo-moar c2349d: OUTPUT«(Any)␤»
13:05 faraco left
tbrowder when 0 {.say} 13:06
timotimo m: when _:U { .say }
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5===␤Function '_:U' needs parens to avoid gobbling block␤at <tmp>:1␤------> 3when _:U { .say }7⏏5<EOL>␤Missing block (apparently claimed by '_:U')␤at <tmp>:1␤------> 3when _:U { .say }7⏏5<EOL>␤␤»
timotimo hah
how do you spell that %)
i guess Mu:U or Any:U would be correct
moritz Mu:U
IOninja Depends on what you wanted to spell :) 13:07
m: with Mu|Mu { when Any:U { .say } }
camelia ( no output )
IOninja m: without Mu|Mu { when Any:U { .say } } 13:08
camelia ( no output )
AlexDaniel m: use Test; is-deeply (42, Mu), (42, Mu)
camelia rakudo-moar c2349d: OUTPUT«Type check failed in binding to <anon>; expected Any but got Mu (Mu)␤ in sub _is_deeply at /home/camelia/rakudo-m-inst-1/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 579␤ in sub is-deeply at /home/camelia/rakudo-m-inst-1/s…»
AlexDaniel any comment on this? ↑
13:08 faraco joined
IOninja Use `is` 13:08
AlexDaniel m: use Test; is (42, Mu), (42, Mu)
camelia rakudo-moar c2349d: OUTPUT«Use of uninitialized value of type Mu in string context.␤Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.␤ in block at /home/camelia/rakudo-m-inst-1/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219…»
IOninja haha
moritz AlexDaniel: it's an unfortunate side effect of the decision that === and eqv should autothread, thus they can't compare Mu 13:09
IOninja Why do you have a Mu?
AlexDaniel m: my @foo := 42, @::foo
camelia ( no output )
AlexDaniel m: my @foo := 42, @::foo; say @foo
camelia rakudo-moar c2349d: OUTPUT«(42 (Mu))␤»
IOninja And you want a roast test that would test for that Mu?
moritz please don't test this as desired outcome
IOninja Yes.
AlexDaniel what's the desired output then? 13:10
IOninja I'd say currently undefined.
AlexDaniel OK
IOninja And hence no test
AlexDaniel I'm fine with that
IOninja 'cause Mu there doesn't feel overly useful and if we add a test we lock ourselfs into having Mu there
jnthn wonders if a compile-time error would be the best thing...
IOninja m: my @foo := 42, @foo; say @foo 13:11
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot use variable @foo in declaration to initialize itself␤at <tmp>:1␤------> 3my @foo := 42, @7⏏5foo; say @foo␤ expecting any of:␤ term␤»
jnthn m: my @a = 1,2; say @::a
camelia rakudo-moar c2349d: OUTPUT«[1 2]␤»
moritz jnthn: we already have one for the normal case, and the @::foo is a workaround against that :-)
AlexDaniel yea, I don't mind if there was a proper compile-time error
13:11 itaipu left
moritz but is that something you'd write accidentally? 13:12
AlexDaniel no
moritz then what's the point?
13:12 Actualeyes joined
IOninja We plan to remove that error 13:12
m: my @foo = 42, @::foo; say @foo 13:13
camelia rakudo-moar c2349d: OUTPUT«(\Array_64468560 = [42 Array_64468560])␤»
IOninja ^ cause that works for example
moritz but that doesn't work for binding, right?
AlexDaniel yes
IOninja Right
moritz so we should keep the error in the case of binding
AlexDaniel it's only binding that is an actual issue
… no
moritz why not?
IOninja Why no?
AlexDaniel because you just get Mu, what's so horrible about it? 13:14
DIHWIDT
IOninja Because the user likely didn't want a Mu there
AlexDaniel what did they want then?
IOninja Possibly a circular array 13:15
moritz AlexDaniel: they likely made a wrong assumption
IOninja Same with cases that end up with VMNull or whatever it was
moritz AlexDaniel: which is why we should catch the behavior that is a likely error, and undefined behavior anyway
IOninja m: my \a = a; say a.^name
camelia rakudo-moar c2349d: OUTPUT«VMNull␤»
AlexDaniel yea, feel free to implement a proper error
IOninja m: my $a := $a; say $a.^name
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot use variable $a in declaration to initialize itself␤at <tmp>:1␤------> 3my $a := $7⏏5a; say $a.^name␤ expecting any of:␤ term␤»
IOninja m: my $a := $::a; say $a.^name
camelia rakudo-moar c2349d: OUTPUT«VMNull␤»
AlexDaniel that catches more wrong assumptions and doesn't prevent proper code to work 13:16
13:17 pyrimidine joined, newbie1 joined 13:22 pyrimidine left 13:28 lizmat left 13:29 bjz left 13:31 lukiramu joined 13:32 espadrine_ joined
MARTIMM m: my @s=1,2,3; for @s { my $line = $^line; say "->> $line"; } 13:33
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Redeclaration of symbol '$^line' as a placeholder parameter␤at <tmp>:1␤------> 3my @s=1,2,3; for @s { my $line = $^line7⏏5; say "->> $line"; }␤»
[Coke] yawns.
AlexDaniel m: my @s=1,2,3; for @s { say "->> $^line"; } 13:34
camelia rakudo-moar c2349d: OUTPUT«->> 1␤->> 2␤->> 3␤»
IOninja m: my @s=1,2,3; for @s { $ = $^line; say "->> $line"; }
camelia rakudo-moar c2349d: OUTPUT«->> 1␤->> 2␤->> 3␤»
IOninja MARTIMM: that's normal. $line can be used instead of $^line once the signature has been figured out, hence its complaint about you trying to declare $line 13:35
13:35 lukaramu left
AlexDaniel m: my @s=1,2,3; for @s -> $line { say "->> $line"; } 13:35
camelia rakudo-moar c2349d: OUTPUT«->> 1␤->> 2␤->> 3␤»
IOninja lets you use these variables inside inner blocks
MARTIMM Ok, so after using $^line once it is possible to use $line in this case 13:36
IOninja Yes.
MARTIMM thanks, bye
AlexDaniel bye :)
IOninja bye... baby 🎶🎶 13:37
13:39 wamba joined 13:43 Actualeyes left, newbie1 left 13:44 newbie1 joined 13:45 newbie1 left 13:46 newbie1 joined 13:47 newbie12 joined, itaipu joined 13:50 newbie1 left 13:51 wamba left 13:54 user9 left, user9 joined 13:56 brrt left, xtreak joined 13:59 brrt joined 14:01 mr_ron joined, xtreak left
Geth doc: 73f6e6f910 | (Will "Coke" Coleda)++ | 2 files
Test doc/Language/haskell-to-p6.pod6 examples

Closes #1199
14:03
doc: be0e9fb797 | (Will "Coke" Coleda)++ | doc/Language/haskell-to-p6.pod6
Fix spelling of Perl 6
14:07 newbie1 joined, newbie1 left 14:08 yqt joined 14:09 newbie12 left 14:12 Actualeyes joined 14:14 sammers left 14:17 MARTIMM left 14:25 kurahaupo__ joined, yqt left, yqt joined 14:33 ufobat left, yqt left, yqt joined 14:34 yqt left 14:35 yqt joined, yqt left, yqt joined 14:36 yqt left, yqt joined, yqt left 14:37 yqt joined 14:38 pmurias joined 14:42 duncan_dmg joined 14:43 abraxxa left 14:49 skids joined 14:52 girafe joined 14:54 itaipu left
Geth doc: 11c89a09f8 | Cale++ | doc/Type/Str.pod6
Add two more examples to comb

Just to make the "chunking" ability more obvious to newcomers.
14:57
14:59 sunnavy left 15:03 yqt left, yqt joined 15:05 jonas2 joined 15:06 rumble joined, sunnavy joined 15:08 girafe left, grumble is now known as Guest51839, Guest51839 left, rumble is now known as grumble 15:10 awwaiid joined, sammers joined 15:13 ufobat joined 15:14 brrt left, newbie1 joined, jonas2 left 15:16 yqt left 15:18 pyrimidine joined 15:21 faraco left 15:23 pyrimidine left 15:28 itaipu joined 15:34 raiph joined 15:38 brrt joined, wamba joined 15:39 rblackwe_ left, avuserow left, rblackwe joined 15:40 avuserow joined
stmuk_ reads a certain blog post from yesterday and grrs a bit 15:46
IOninja Which one? 15:47
"Deception in tests considered harmful"? 15:48
stmuk_ yes 15:49
IOninja That guy just loves quoting me, eh? :)
Pretty annoying to have your words taken in bits out of context. 15:50
stmuk_ anyway there was useful technical input even if the tone (and use of "deception" was a bit hostile 15:51
jnthn "Handling different EOL conventions is straightforward"...heh, heh...except the first thing that happened when we introduced what he proposed was somebody asking for a way to *not* have that happen.
While I agree it's the right default for Proc::Async, you can't just blanket do it; it's be the wrong thing for socket I/O 15:52
15:52 jonas2 joined
jnthn *it'd 15:52
IOninja "When I write about flaws and problems I observe in Perl 6, people call me names and claim I am mocking Perl 6, lying about its stability etc. In truth, I want to be enthusiastic about Perl 6, but I am disappointed more often than not." 15:53
heh
stmuk_ "hard things in being difficult" shock
brrt i'm not familiar with the perl6 community being mean, so i'm somewhat surprised by that assertion
IOninja brrt: you clearly missed his famous thesis whose conclusion is Perl 6 Developers Are Racist. 15:54
brrt who is this him
and why 15:55
IOninja The guts of which were rebuked with "you never reported a single issue with Perl 6"; so now he has a bunch.
Geth doc: 159f1ef02e | (Tom Browder)++ | doc/Language/control.pod6
a little more word-smithing

attempt at clarity--please change or comment
IOninja brrt: no idea who he is. A blog author who writes for clicks?
IOninja shrugs
jnthn IOninja: Yes, and the reports are actually useful, though more abrasive than necesary.
brrt if this is on twitter, then, i hate to say, you brought this on yourselves and should've known better
:-P
[Coke] tbrowder: why did you quote "statement modifier form" ?
IOninja jnthn: yes, I found the ticket on the \r\n thing useful. Not sure why it warranted a blog post. 15:56
tbrowder because it's that way in the if description
[Coke] ... ok. I'd probably have normalized it the other way, but consistency is a good reason. :)
stmuk_ my favourite from reddit was "By the way, this is open source. I brought the problem to the attention of a broader group of people. Someone else can also fix those tests."
open source isn't "someone else can do it!"
IOninja I won't make the mistake of reading reddit comments this time :) 15:57
tbrowder i agree, without quotes in both cases seems better to me
15:58 sunnavy left, sunnavy joined
[Coke] tbrowder: are you editing via a git repo or the UI? 15:59
IOninja I guess "look at how broken this shit is" garners more clicks than showing something cool about the language. Just as in news all they report about is murders and roberries.
tbrowder on-line via chrome browser
IOninja m: say "\r\n".chars; say "\n" eq "\r\n"
camelia rakudo-moar c2349d: OUTPUT«1␤False␤»
IOninja So it's one grapheme but it's not the same thing as just \n 16:00
jnthn Right
[Coke] tbrowder: ok. (your commits lately have been failng 'make xtest', but if you're doing it via the UI, that's why) no wrroies.
IOninja Eh. Will figure it all out eventually :)
jnthn Transformation is done at the point of "I/O" (except not really, it's done at the point of string decoding)
IOninja *We'll
[Coke] who just added examples to Str? 16:01
jnthn We "just" need to enable that for Proc::Async
[Coke] is cale here?
tbrowder if that's a problem i can go back to my repo, but it's so much easier via browser for much stuff
are we getting bad line endings or ending spaces or munged chars? 16:02
Geth doc: 0f03767624 | (Tom Browder)++ | doc/Language/control.pod6
put closing quote in same place as if block's use
16:05
16:14 cdg joined
Geth doc: 1122a88012 | (Tom Browder)++ | doc/Language/control.pod6
add format chars
16:18
16:20 pyrimidine joined
AlexDaniel c: all say "\n" eq "\r\n" 16:23
committable6 AlexDaniel, gist.github.com/89de8c3f251dc31b4a...d9bc1823cc
16:23 chee is now known as unix, cdg_ joined 16:24 gdonald left, unix is now known as Guest42169, gdonald joined, Guest42169 is now known as chee 16:25 lostinfog joined 16:26 brrt left 16:27 cdg left 16:28 ssotka joined
AlexDaniel “Low competitive keyword selection, leading to poor search engine rankings” 16:47
“Last but not the least your online marketing methods are not directed as per latest guideline”
:D
RT spam that actually sounds like a valid bug report xD 16:48
16:50 eliasr left
Geth doc: 72d3a7b4b7 | (Will "Coke" Coleda)++ | doc/Language/control.pod6
remove trailing whitespace
16:52
doc: a92b7604d1 | (Will "Coke" Coleda)++ | xt/code.pws
learn new code words
doc: 99aa1b7065 | (Will "Coke" Coleda)++ | doc/Type/Str.pod6
fix examples
[Coke] (docs) How do people feel about making the examples test part of 'make test' so bad examples break the build? 16:53
perlpilot [Coke]: Are there any bad examples that are that way on purpose? 16:54
16:54 cognominal left
sena_kun perlpilot, there are, but they are properly skipped. We can compile and check all "valid" examples as for now. 16:54
perlpilot then +1 from me. 16:55
sena_kun I'm personally +1 for this feature, but not until I(or someone quickier) do better error reporting.
[Coke] perlpilot: I just went through some effort to make sure the test passes. :) 16:56
sena_kun: are you excited about working on that test file? I am happy to do it, and will have time tomorrow. 17:01
(much less frustrating than some of my other doc efforts atm.) 17:02
17:02 Actualeyes left
sena_kun [Coke], did you mean the test script or some specific doc file? 17:02
[Coke] xt/examples* 17:03
there's 2 bits left there, I think: removing each skip, and converting the test elements to be per-example rather than per-file.
I was talking about the latter.
17:04 devmikey joined
sena_kun Hmm, let's see. I can/plan to do some improvements(for example, do not throw err to /dev/null), but not so much. I'm still worse at Perl 6 than at doc-related digging. :) So I can't disagree with your effort to do the latter. 17:06
17:06 itcharlie1 joined 17:08 devmikey left
sena_kun This weekend will be quite busy anyway. But I'm very happy that this work recieves any attention, firstly I thought that it was harmful or redundant. 17:08
17:11 khw joined, itaipu left 17:16 duncan_dmg left 17:18 itaipu joined 17:42 eroux joined 17:49 espadrine_ left
IOninja is really irked by nanis's post 17:58
17:59 jraglin joined
IOninja Most annoying is I wasted time like an idiot explaining him how to run the stresstest. 17:59
18:02 zakharyas left
IOninja m: note (Nil andthen "foo" orelse Nil orelse "bar"); 18:06
camelia rakudo-moar c2349d: OUTPUT«-> ;; $_ is raw { #`(Block|81627504) ... }␤»
IOninja m: note (Nil andthen "foo" orelse Nil orelse "bar")()
camelia rakudo-moar c2349d: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: note (Nil andthen "foo" orelse Nil orelse "bar")(Nil)
camelia rakudo-moar c2349d: OUTPUT«Nil␤»
IOninja m: note (Nil andthen "foo" orelse Nil orelse "bar")("meow")
camelia rakudo-moar c2349d: OUTPUT«Nil␤»
IOninja Don't really know how to detect an Empty given to `orelse` :/ github.com/rakudo/rakudo/blob/c234...#L658-L684 18:07
The +a slurpy destroys it
Feels like `andthen` returning an Empty is a bad idea. 18:08
...or maybe don't need to detect it; just execute anything Callable before returning it? 18:11
m: note (Nil andthen "foo" orelse Int orelse "bar")("meow")
camelia rakudo-moar c2349d: OUTPUT«(Int)␤»
IOninja seems it isn't the only issue heh
18:11 zakharyas joined 18:13 itaipu left 18:17 itaipu joined
gfldex [Coke], sena_kun I spend some time on thinking about how to run the tests. Firstly each test should be EVALed (that's what EVAL is for). 2ndly they should be sha1ed so we can cache them easily. We can keep a list of sha1s of tests around that we are fine to fail as a flat file, what allows to remove the skiptest mark in the .pod6 files. 18:18
sena_kun gfldex, the idea looks smart for me. though it requires some work, but it can be automated easily. 18:20
gfldex be chomping each test we got a good chance to cache examples that pop up in more then one .pod6 18:22
[Coke] we don't need to cache them,^H. 18:25
sena_kun why?
[Coke] because it's fast enough 18:26
so why expend extra coding effort and complexity?
gfldex fun 18:27
[Coke] and we technically only need to insure they compile, so EVAL might be overkill. (we're not checking results or that the runtime works) 18:29
gfldex there could be BEGIN magic
[Coke] (but if that's faster than perl6 -c and works, that's fine.)
gfldex: sure, BEGIN hits us either way. (and it's why we can't easily test the phasers file ATM) 18:30
18:31 lostinfog left 18:34 brrt joined 18:35 brrt left 18:37 rindolf left 18:39 espadrine joined 18:40 hankache joined
hankache hello #perl6 18:40
yoleaux 14 Feb 2017 18:24Z <IOninja> hankache: Your perl6intro site tells users to use untested development commits by building them with rakudobrew: perl6intro.com/#_installing_perl_6 We generally avoid suggesting rakudobrew since users aren't skilled enough to fix any issues with it and users should be using properly tested user releases, not whatever commit ended up being HEAD when they build perl6
18:42 rindolf joined
[Coke] 'allo 18:43
IOninja \o 18:44
18:49 agentzh left 18:50 agentzh joined
tony-o m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b(&{$b.l}); 18:50
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$b' is not declared. Did you mean '&b'?␤at <tmp>:1␤------> 3ble $x){ $x.(50); }; my a $a .=new; b(&{7⏏5$b.l});␤»
tony-o m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b(&{$a.l});
camelia rakudo-moar c2349d: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in method l at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
tony-o did that break or change somewhere in the last year? 18:51
IOninja that is what?
$a.l is missing the $x arg 18:52
tony-o $x arg should be the $b.l
IOninja c: 2014.02 m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b(&{$a.l});
committable6 IOninja, ¦«2014.02»: 04===SORRY!04=== Error while compiling /tmp/8LeieoGJpX␤Unsupported use of &{$a.l}; in Perl 6 please use &($a.l)␤at /tmp/8LeieoGJpX:1␤------> 03x){ $x.(50); }; my a $a .=new; b(&{$a.l}08⏏04); «exit code = 1»
tony-o that worked more than a year ago, it may have changed - just don't recall seeing anything 18:53
m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b(&($a.l));
camelia rakudo-moar c2349d: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in method l at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja Never sen &($a.l) to be a lookup of a method callable
m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(a, 50); }; my a $a .=new; b(&($a.l));
camelia rakudo-moar c2349d: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in method l at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b($a.^lookup: "l")); 18:54
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unexpected closing bracket␤at <tmp>:1␤------> 030); }; my a $a .=new; b($a.^lookup: "l")7⏏5);␤»
IOninja m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b($a.^lookup: "l");
camelia rakudo-moar c2349d: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in method l at <tmp> line 1␤ in sub b at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja bah
m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(a, 50); }; my a $a .=new; b($a.^lookup: "l");
camelia rakudo-moar c2349d: OUTPUT«50␤»
tony-o hm, that seems unnecessarily complicated..it may not always be an 'a' 18:55
IOninja m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b({$a.^lookup("l").($a, $^arg));
camelia rakudo-moar c2349d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------> 3$a .=new; b({$a.^lookup("l").($a, $^arg)7⏏5);␤ expecting any of:␤ statement end␤ statement modifier␤ statement modifier loop␤»
IOninja m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b({$a.^lookup("l").($a, $^arg)});
camelia rakudo-moar c2349d: OUTPUT«50␤»
IOninja m: say &(42.abs)
camelia rakudo-moar c2349d: OUTPUT«42␤»
IOninja c: all say &(42.abs)
committable6 IOninja, gist.github.com/087164dadfe6c96d91...9ddcec9534 18:56
tony-o github.com/perl6/perl6-http-server...c.pm6#L168
IOninja yeah, but what's $m?
tony-o that's calling a method that could come from anywhere and the order matters
m is a method or sub as specified by the developer 18:57
could be both depending on what is pushed into the middleware stack of H:S:A
hankache IOninja: is there something in rakudobrew that points to the latest release? something like: rakudobrew build moar release? 18:58
AlexDaniel hankache: I guess the idea is not to use rakudobrew 18:59
tony-o rakudobrew build moar-nom
IOninja hankache: we actively avoid recommending rakudobrew to users. So IMO it's unfortunate your popular website directly opposes that effort
tony-o hankache: ^
hankache aha ok 19:00
IOninja 'cause then they have all sorts of issues and all of a sudden they think Perl 6 sucks when in reality they, for example, forgot to run rakudobrew rehash or something similar
hankache I didn't know we were avoiding rakudobrew. 19:01
cool then, what should I recommend?
IOninja Rakudo Star
tony-o IOninja: i'm not going to publish a module that requires an end user to use that syntax to allow something to call their method
that seems silly. 19:02
IOninja It's a tested release, both during the compiler release and during Rakudo Star release that includes all the bells and whistles a typical user would need.
tony-o: so don't? 19:03
m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b({$a.l: |@_});
camelia rakudo-moar c2349d: OUTPUT«50␤»
IOninja m: class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b({$a.l: $_}); 19:04
camelia rakudo-moar c2349d: OUTPUT«50␤»
19:04 hankache_ joined, hankache_ left
tony-o if i looked at module docs that showed me that syntax to push my middleware into their server stack i'd find another solution 19:04
because that's dumb.
19:05 hankache_ joined, hankache_ left
IOninja It's 2 characters longer than the original solution you thought was the right syntax. 19:05
tony-o it's unecessarily obscure 19:06
IOninja heh
19:07 hankache_ joined
tony-o my first thought wouldn't be "i'll wrap my method with a block that calls my method with all of the args!" 19:07
19:07 hankache left
hankache_ IOninja ok i'll update it 19:07
19:07 darutoko left
tony-o again, it's not a solution - it's a workaround at best 19:08
IOninja tony-o: but it would be "I'll use an imaginary syntax that magically passes my invocant along with the callable"?
tony-o it worked over a year ago, i didn't ask for the solution. i asked if something changed and broke or if it was planned. 19:09
IOninja c: all class a { method l($x) { "$x".say; }; }; sub b(Callable $x){ $x.(50); }; my a $a .=new; b(&{$a.l}); 19:10
tony-o so yes. you can call it imaginary if you'd like, but you're missing the point of the actual question.
committable6 IOninja, gist.github.com/7a88d848424564e5e1...bdefc3775c
IOninja I called it imaginary because commitable showed say &(42.abs) never returned a callable 19:11
And based on the above results your original syntax never worked.
tony-o it did work, timo or jnthn used it to hijack http connections but thanks for all of the peanut gallery help 19:12
19:12 hankache_ left 19:13 hankache joined
IOninja Umm... You're welcome? Don't let the evidence interfere. 19:14
tony-o i think the words you're looking for are "I don't know but I enjoy arguing."
El_Che hankache: I use my own debs/rpms in my Docker images in case you're in Linux and you want prebuilt binaries 19:15
hankache: github.com/nxadm/rakudo-pkg/releas...2017.01_02
IOninja No, the words I was looking for is "The bot ran your code against all releases for the past 3 years and one none of them the code you think worked in the past worked. Here are three alternative solutions that do work, but feel free to ignore the evidence if you want to be a dick about it"
tony-o lol. 19:16
hankache El_Che++ 19:17
AlexDaniel well, I like the way it sounds. Perhaps we can include it in committable… 19:18
El_Che hankache: of course for a Regular user, Rakudo::Star may be more applicable. But I don't have the patience to wait until the compiling is done
hankache: specially when building Docker images, in my case 19:19
hankache: the packages are just an artifact of the project meant to easily create your own packages 19:21
hankache El_Che indeed, for the sake of perl6intro.com I'll recommend R*. But I'll personally try your docker images.
El_Che hankache: the docker images is for creating the packages. But you can use the packages in reelase if you don't want to do any compiling 19:23
stmuk_ I had a PR for rakudobrew to build the last release but it was never merged and doesn't apply anymore
it would probably be fairly easy to fix it if anyone is interested 19:24
19:26 labster joined
hankache stmuk_ it would have, but apparently rakudobrew all together is not recommended anymore (I don't know why though). I'll just replace it with steps to install R* if this is what we recommend now. 19:27
IOninja hankache: because we found users frequently have problems with it and don't know enough about Perl 6 internals or rakudobrew itself to resolve them. 19:33
Or build dev commits 19:34
hankache: a common example is users don't know they need to run `rakudobrew rehash` when installing scripts. 19:36
So they go and mess up their $PATH trying to make the scripts visible when it's not the right solution.
tony-o IOninja++ ^ that gets filed as a bug fairly regularly
19:37 itcharlie1 left
El_Che the confusion is pretty understable. Rakudobrew was the easiest way to get perl 6. 19:37
als on rakudo page 19:38
IOninja Yeah, there's a ticket to update that page... but not enough hands to do it. 19:39
19:39 cognominal joined
El_Che IOninja: I find the non SSL donwload thing worse (I volunteered to help but no response) 19:39
moritz do we want to host the dowloads on rakudo.perl6.org instead? 19:40
IOninja +1
moritz I can easily get SSL certs for that domain
El_Che It would be great to at least mirror npq, rakudo, moarvm 19:41
tony-o i have a stable server that can mirror moritz .
El_Che everything you need to build rakudo
19:41 sanctusgray joined 19:43 Unavowed_ joined 19:45 drrho left, drrho joined 19:46 Unavowed left
hankache +1 for rakudo.perl6.org 19:46
19:49 hankache_ joined 19:51 hankache left 19:52 zakharyas left 19:53 hankache_ left 19:55 eroux left 20:00 girafe joined 20:03 hankache joined
hankache IOninja perl6intro.com/#_installing_perl_6 ok now? 20:06
IOninja hankache++ thanks. FWIW we have special URLs that always point to latest release, e.g. rakudo.org/downloads/star/rakudo-st...est.tar.gz 20:10
(though I guess they'll change if we're doing the rakudo.perl6.org thing?)
hankache i guess 20:11
20:11 andrzejku_ joined
moritz I'm populating rakudo.perl6.org/downloads/source/ as we speak 20:13
IOninja \o/ 20:14
moritz ... now with TLS: rakudo.perl6.org/downloads/source/ 20:17
... and complete data, if rsync is to be trusted
IOninja moritz++
hankache moritz++ 20:18
but I wish someone could take care of rakudo.org 20:19
:( 20:20
20:22 rindolf left, ssotka left
El_Che thx moritz 20:24
tony-o what do you mean by take care of hankache ? 20:25
20:25 wamba left
hankache tony-o enable https 20:26
moritz get an SSL cert, update wordpress to something non-ancient
hankache update wordpress erc.
20:26 rindolf joined
hankache etc. 20:26
IOninja update php
update downloads page ( rt.perl.org/Ticket/Display.html?id...et-history ) 20:27
El_Che moritz: can you add moarvm as well?
20:28 bjz joined
IOninja For MoarVM we can do it properly on moarvm.com no? 20:28
moritz I'd like to talk to jnthn++ first about moarvm 20:29
El_Che No SSL
IOninja El_Che: I mean here we have contact with the person who's got root to the stie
*site
El_Che (and it would be great to have everything in one place, even if source/moarvm was a redirect to a moarvm ssl page 20:30
moritz I just realize that we upload binaries for star as well
maybe I should remove source/ from the URL
tony-o ah -
IOninja Sounds good. Less to type too
tony-o do you just need a CC to get an SSL cert for it or do you need the config done?
20:31 dwarring joined
hankache can't we get hold of the rakudo .org domain/ 20:32
?
El_Che moritz: step 2 is hashes and/or signing
IOninja .seen pmichaud 20:33
yoleaux I saw pmichaud 15 Sep 2016 01:34Z in #perl6: <pmichaud> m: my $input = '(\d\d\d)'; my $m = 'a 123' ~~ /$0=<$input>/; say $m
hankache we can then redirect it to rakudo.perl6.org and build a new wordpress etc.
moritz we won't run a wordpress on the same host as *.perl6.org 20:34
for security reasons
it may run on a different host, with a proxy or something
but running wordpress on the same host as where our code dowloads are is just asking for trouble 20:35
hankache moritz ok
moritz I've removed the source/ part of the URL
hankache moritz thanks 20:37
20:37 nicq20 joined
hankache i'll update perl6intro.com and perl6.org/downloads 20:37
moritz thanks ++hankache
hankache to point to the new url 20:38
dwarring r: my $r := do 42 with Nil; say $r.perl;
camelia rakudo-moar a162c4: OUTPUT«Empty␤»
..rakudo-jvm fb4f16: OUTPUT«slip()␤»
dwarring r: my $r := do 42 with Empty; say $r.perl;
camelia rakudo-moar a162c4: OUTPUT«-> ;; $_ is raw { #`(Block|81724200) ... }␤»
..rakudo-jvm fb4f16: OUTPUT«-> ;; $_ is raw { #`(Block|277551034) ... }␤»
IOninja aw shit 20:39
20:39 wamba joined
IOninja dwarring: you could add those cases to rt.perl.org/Ticket/Display.html?id...et-history 20:39
(with compiles to andthen)
dwarring IOninja: will do 20:40
jnthn moritz: You wanted to talk to me? :) 20:42
moritz jnthn: yes. I'm mirroring the rakudo, nqp and star downloads on rakudo.perl6.org/ 20:43
jnthn: because we've got a valid SSL cert for that, but not for rakudo.org
jnthn moritz: Ah, OK
moritz jnthn: now people have asked for MoarVM stuff to be there too
jnthn: would you mind that? and/or get an ssl cert for moarvm.org /moarvm.com? 20:44
timotimo i didn't even realize moarvm.org/.com were ssl-cert-less
jnthn moritz: Lets Encrypt lets me get free certs, yes?
moritz jnthn: yes
jnthn OK
Do you recommend the CertBot path?
moritz jnthn: and you can set up a cron to renew them automatically
jnthn: that's what I use for perl6.org; painless, if a tad heavy on dependencies 20:45
timotimo moritz: do we want to put a README into rakudobrew's home folder to explain under what circumstances updates should happen?
moritz timotimo: on hack? 20:46
timotimo yup
i recently did a rebuild, and also added a module to the MODULES that was needed for doc.perl6.org
moritz timotimo: the conditions are "whenever somebody reminds moritz to do it, or whenever somebody else does it" :-)
timotimo i think the rebuild was necessary for it to work with newer Inline::Perl5 versions
oh, OK 20:47
20:47 Tonik joined
moritz timotimo: feel free to document that if you feel it's valuable 20:47
timotimo i was wondering if we wanted to guarantee some kind of version stability or so
not so important :P
moritz timotimo: and thanks for updating! :-)
timotimo sure thing!
those kinds of thing are easy to do even for me! :P
the cron job for testers.perl6.org is annoying the F out of me
i think i want to make it happen 1/3rd as often
ideally at some point it'd actually signal if there has been any changes since the last rsync 20:48
there's still some system submitting test reports
moritz timotimo: you might want to look at the perl6/doc script util/update-and-sync 20:49
timotimo but all reports have been marked NA because something somewhere changed and we didn't track the change somewhere else
moritz it does the git pull + checking if something changed in a quite reliable manner 20:50
jnthn moritz: OK, will give it a go 20:52
moritz: If you know: certbot-auto will enable (not mandate) HTTPS? 20:53
(If I just let it go to work) 20:54
IOninja Is there a way to tell if a Callable is a thunk that was automagically made?
jnthn IOninja: .WHAT === Code 20:55
IOninja Simple. Cool. Thanks.
20:55 TEttinger joined
jnthn Aww, certbot-auto somehow didn't work out 20:58
(Hasn't broken anything)
20:58 kentnl left
timotimo moritz: but this is about the generated html files it build, not the git codebase 20:58
20:59 kent\n joined
jnthn moritz: No worries, it asks that later, and it worked after manually restarting apache 21:01
www.moarvm.org/ :-)
Geth perl6.org: hankache++ created pull request #76:
s/ rakudo.org / rakudo.perl6.org
21:02
timotimo oh, so we're not mirroring the wordpress instance? 21:03
21:03 agentzh left
moritz jnthn++ 21:04
jnthn moritz++ # nudging me to do it :) 21:05
It was a lot easier than I expected :)
moritz yes, let's encrypt makes stuff really easy
and with 90 days validity basically forces you to automate renewal 21:06
IOninja Wow you did it already? 21:07
Maybe I should do it on perl6.party and perl6.fail then...
jnthn Yeah, and set up the cronjob for auto-renewal already :) 21:08
El_Che who's pgp signing the rakudo releases? could he/she also sign the moarvm release?
jnthn++
moritz El_Che: whoever cuts the releases 21:09
IOninja: do it, it's not hard!
21:09 ufobat left
El_Che moritz: so everytime it's signed by an other key? 21:09
(that would be bad)
moritz El_Che: currently yes
21:09 kaare_ left 21:10 kaare_ joined
IOninja El_Che: well, the releases are cut by different teams on different boxes 21:10
El_Che moritz: it should be predictabe in the future, so people will bother verifying the key in automated processes 21:11
IOninja: I get that. I am looking it from the other side
IOninja El_Che: also rakudo's key is the same on all releases.
21:11 nicq20 left
IOninja El_Che: well, since some point in the past and *is* currently predictable for future releases. 21:11
El_Che 3 unique keys could work, yes 21:12
moritz El_Che: I agree, we might want to have an official signing key, and a process for doing it
21:12 bjz left
AlexDaniel I didn't do anything to automate the renewal of letsencrypt certs… I wonder what does it… 21:12
moritz El_Che: but that's an automation I'm not yet willing to build
El_Che (although 1 makes more sense for the packager/user)
moritz El_Che: but I still plan to create .deb repo with a consistent signing key
El_Che moritz: automation? signing could be a 1 liner for the release manager 21:14
moritz El_Che: but then the release manager needs access to the private key, and we have potentially lots of release managers
El_Che moritz: ah, your thiking of things like Hashicorp's Vault and the like 21:15
21:16 agentzh joined
moritz El_Che: more like debian's infra where there's a keyring of developers who can all upload to a certain repo 21:16
El_Che ic
moritz El_Che: and then some automation kicks in, verifies the signature, and then signs with the official key
hankache moritz can you merge github.com/perl6/perl6.org/pull/76 ? thanks
Geth perl6.org: 258664bdf5 | (Naoum Hankache)++ | source/downloads/index.html
s/ rakudo.org / rakudo.perl6.org

  moritz++
21:17
moritz hankache: sure, done
IOninja hankache: you should have perms to merge yourself.
hankache moritz thanks 21:18
IOninja unfortunately i don't
21:18 zakharyas joined
IOninja hankache: sent an invite. 21:18
21:19 zakharyas left
El_Che Adapted the rakudo-pkg to use the SSL download links. Thx moritz++ and jnthn++ 21:20
hankache IOninja thanks
21:21 faraco joined
faraco Do anyone here an experience making a compiler? 21:21
IOninja :)
Yes, several people have. Why? 21:22
21:22 agentzh left
faraco Just want to know...how difficult are they to implement? I want to learn to make one, but it seems I'm stuck at parsing. I do not really understand the lexical analysis and the syntax analysis very well. Even if I did understand it, I'm not sure making your own parser is a good idea for learning, and I'm thinking on using mpc parser combinator for a start (i have a bit experience making weird lisp interpreter with it) 21:25
perlpilot faraco: "how difficult" totally depends on how difficult you make it :) 21:26
21:26 Tonik left
IOninja faraco: you could try the Rakudo Internals Course: edumentab.github.io/rakudo-and-nqp-...ls-course/ 21:26
faraco and the most magical part to me is, the object code generation (where you can target assembly or virtual machine code, if I'm not mistaken)
moritz lol, I accidentally synchronized the rakudo/nqp etc downloads through my mobile phone
had forgotten I had tethering enabled 21:27
IOninja faraco: I built a small language in a couple of days with it: github.com/perl7/perl7
moritz: ouch
faraco IOninja, that is really coool!
IOninja I hope you have a better data plan than I do....
moritz 2.5gb in <1h.
IOninja: yes, much more than I need, (employer pays)
IOninja phew :)
moritz faraco: in some sense, compilers are among the simplest programs, because they just receive a text file as input and output some text or binary data 21:28
faraco perpilot: I want to make it easy by using the parsinh combinator, but I have this feelinh where I'm afraid if 'skipped' the essential part on making a compiler.
moritz doesn't need to be parallel/concurrent/async/whatever
sena_kun faraco, I did(just a little bit, though). If you know any functional language, you can try Peyton Jones tutorial. "How difficult" is mostly depend on how fast/well-featured compiler(and base language) you want to have. Some simple language can be written very easily, but if you need something harder... It will be harder. 21:29
moritz faraco: you can always go back later and implement a different parser
21:29 cpage joined
moritz faraco: but it's also good not to have too many moving parts in the beginning 21:29
jnthn Writing an interpreter is also a good stepping stone 21:30
moritz faraco: btw the thing that made compiler building "click" for me was compilers.iecc.com/crenshaw/
faraco moritz: moving parts? for example?
sena_kun Parsing is a cool part, but not essential, I think. Code-generation(or writing your own evaluator) is where the fun is.
moritz faraco: parts that you don't know how to approach
compilers.iecc.com/crenshaw/ is really old-fashioned, but a *very* simple and straight-forward approach to build a compiler
faraco sena_kun: glad to hear that :) 21:31
21:31 pmurias left
timotimo probably the most important thing to know for compilers is things that are structured in trees 21:31
hobbs thinks parsing is fun :)
perlpilot too 21:32
sena_kun too
perlpilot timotimo: you mean lists ;>
21:32 gdonald left, gdonald joined
moritz and soon you'll find out that dynamic scoping in the compiler corresponds to lexical scoping in the program you're compiling 21:33
21:33 agentzh joined
faraco timotimo: taking that as a note :D 21:34
perlpilot faraco: another important thing is that parsing happens in one direction, but you often need to pass information in the other direction. The tree-nature helps in this regard. 21:35
faraco moritz: that is fascinating. I'm actually do no really understand the real deal with lexical scoping (even some already explained it to me), hoping by making this compiler helps me reveal the mysteries about programming languages in general.
21:37 pyrimidi_ joined, pyrimidine left
timotimo nested lists! 21:38
moritz faraco: that's actually a good approach to learn it
perlpilot faraco: when I was younger I had the Dragon book and Compiler Design in C and a few others. Each book approached the problem from a different perspective. Some theoretical, some pragmatic. It helps you put things together when you can look at the same problem from different sides.
moritz faraco: oh, and I highly recommend you write your compiler in Perl 6, and use Perl 6's awesome grammars for parsing 21:39
21:39 lizmat joined
faraco perlpilot: hmm, maybe I need to research more about AST and the tree parsing part before using a parser combinator. I read that in the second chapter in the dragon book, where if I'm not mistaken, the postfix tree is like backward lisp. 21:39
moritz puts "Writing a Compiler in Perl 6" on his lists of books to write 21:42
faraco moritz: I have a thought in using Perl 6 too, I'm very sure it is good at these stuff when I saw the grammar parsing example (in the docs I believe). 21:43
perlpilot moritz: that would be a great book!
moritz perlpilot: with maybe 5 readers world wide! :-)
faraco the first reader will be me :D 21:44
21:45 wamba left, itaipu left
perlpilot In the late 1980s there was some tutorial on compiler writing that I downloaded from a BBS. I don't remember the name of the tutorial, but that was the first time I tried making my own compiler. I have fond memories of trying to make a compiler in Pascal then. (I was so young!) 21:46
21:47 wamba joined, bjz joined 21:49 jonas2 left
perlpilot moritz: if you could somehow couple it with "How to modify the Perl 6 language" or "Writing a DSL in Perl 6" or something related, you could have way more than 5 readers :) 21:52
21:53 wamba left
moritz perlpilot: yes, 10 21:53
perlpilot: of which 5 are beta readers :-)
moritz should temper his sarcasm 21:54
tbrowder jnthn: which client did you use for Letsencrypt cert automation?
moritz tbrowder: it seems he used certbot
jnthn Yes, certbot
Just followed the instructions on that page 21:55
21:55 wamba joined
jnthn certbot.eff.org/ 21:55
moritz I used to use simp_le, but it stopped working some months ago 21:56
21:56 lizmat left 21:58 andrzejku_ left
sena_kun faraco, I can be late, but it is hard for me to advice Dragon book. Of course, I don't have decades of experience, but when I tried to read it, it was really hard for me to wrap my head around, especially with parsing part. I'm sure there are simplier tutorials(not a large book) around. Dragon book can be good if you have some foundation already. 22:01
faraco sena_kun: I too admit that I feel the book is a bit more advanced than I expected. It seems it was targeted for CS major undergraduates. Before the dragon book, I also have tried the Let's make a compiler book. Unfortunately it is in Pascal (I'm hoping for C), that I touched for a couple of times, so far with freepascal (I don't remember if the first program is compilef and working) 22:06
22:13 hankache left
tbrowder jnthn: moritz: thanks. the problem i've been having is automation when you have a new domain without an active server, seems to need standalone certification. certbot can't handle it, and client acme.sh has done the best for me. documentation of behind-the-scenes stuff is awkward but i think i have a solution and am well on the way to having a working p6 22:13
specialized client wrapper to do what i need. basically i use acme.sh driven by my wrapper to always do an original issue only when needed and use my wrapper to do the cron job, etc. the standalone method requires me to shutdown apache for a few minutes and i choose about 0300 local time, and only once per day. when i check the certs at cron time, i read
the expiration date of all certs, then issue ones needed, and copy new files into place. then restart apache and check that all is well--cron job finished. life would be easier with a dns registrar with a better API to do direct domain validation, but namecheap doesn't have a fine-grained API yet (although i just sent them a feature request this morning).
22:16 bjz_ joined
sena_kun faraco, is this "Let's make a compiler" a Wirth's book? I tried it too and it was a lot more compact comparing to Dragon book, but yes, Pascal somewhat complicated things. As I wrote before, you can "mostly" safely skip parsing part, since there are many different concepts that are importaint to reason about how languages work. But in my opinion, when you for a half of night debug infinite loops because of a buggy reduction strategy it is 22:17
worse than when you work with a parser. :) Anyway, good luck with it! It's time to go to bed already~ 'night, #perl6.
22:18 bjz left
faraco sena-kun: ty for the advice. later. 22:19
22:19 sena_kun left 22:20 faraco left 22:21 sanctusgray left 22:32 RabidGravy left 22:33 skids left
IOninja oh, totally forgot I ran updater script for perl6.wtf a few days back... Seems the coverage script is still busted. Says everything's uncovered. 22:39
22:39 rindolf left
IOninja "Use of uninitialized value of type Any in numeric context" in nqp/MoarVM/tools/parse_coverage_report.p6 lines 88, 91, and 168 22:41
timotimo did the update to the moar pr work? i force-pushed it so maybe you have to git reset --hard into/onto it 22:46
22:47 romrador joined
IOninja I think it did. My script fresh-clones everything. 22:47
timotimo ok 22:48
22:48 espadrine left 22:50 bjz_ left
IOninja wow, certbot.eff.org/ is sure painless. 22:51
perl6.party perl6.fail perl6.wtf all set up with a single run :)
moritz IOninja++ 22:52
timotimo nice 22:54
IOninja heh... I hope this person on TPM's mailing list knows what the latest game in town is :) mail.pm.org/pipermail/toronto-pm/20...03917.html 23:09
IOninja will never understand the appeal of Monty Python stuff...
diakopter IOninja: that post seems like a troll/joke post 23:10
timotimo a bit, yeah
IOninja :)
tbrowder certbot may be painless for a "standard" server set up, but try it with a virgin domain (no server) and custom httpd.conf--i would love to hear cookbook details. 23:23
IOninja I started with a plain Debian install. 23:24
23:25 b7j0c joined
b7j0c constant V = 'x'; my %h = V => 'a'; 23:26
IOninja m: constant V = 'x'; my %h = V => 'a';
camelia ( no output )
IOninja m: constant V = 'x'; my %h = V => 'a'; say %h
camelia rakudo-moar ffae3f: OUTPUT«{V => a}␤»
IOninja m: constant V = 'x'; my %h = V => 'a'; say %h.keys
camelia rakudo-moar ffae3f: OUTPUT«(V)␤»
b7j0c hashes and constants seem to confuse each other
AlexDaniel wtf
m: constant V = 'x'; my %h = V => 'a'; say %h.keys[0].WHAT
camelia rakudo-moar ffae3f: OUTPUT«(Str)␤»
AlexDaniel m: constant V = 'x'; my %h = V => 'a'; dd %h.keys[0] 23:27
camelia rakudo-moar ffae3f: OUTPUT«"V"␤»
AlexDaniel riiiiight
IOninja That's not the only place even.
m: sub e { 42 }; say e + 2
camelia rakudo-moar ffae3f: OUTPUT«4.71828182845905␤»
geekosaur => still retains some fraction of perl 5's autoquote behavior
IOninja mhm
AlexDaniel m: constant V = 'x'; my %h = (V) => 'a'; dd %h
camelia rakudo-moar ffae3f: OUTPUT«Hash %h = {:x("a")}␤»
IOninja m: constant V = 'x'; my %h = V, 'a'; say %h
camelia rakudo-moar ffae3f: OUTPUT«{x => a}␤»
AlexDaniel m: constant V = 'x'; my %h = $V => 'a'; dd %h
camelia rakudo-moar ffae3f: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$V' is not declared␤at <tmp>:1␤------> 3constant V = 'x'; my %h = 7⏏5$V => 'a'; dd %h␤» 23:28
b7j0c but %h{VV} = 'a' works
geekosaur m: constant V = 'x'; my %h = +V => 'a'; dd %h.keys[0]
camelia rakudo-moar ffae3f: OUTPUT«Cannot resolve caller Numeric(Pair: ); none of these signatures match:␤ (Mu:U \v: *%_)␤ in block <unit> at <tmp> line 1␤␤»
geekosaur whoops
AlexDaniel m: constant V = 'x'; my %h = ~V => 'a'; dd %h
camelia rakudo-moar ffae3f: OUTPUT«Odd number of elements found where hash initializer expected:␤Only saw: "V\ta"␤ in block <unit> at <tmp> line 1␤␤»
IOninja heh
geekosaur m: constant V = 'x'; my %h = ~V => 'a'; dd %h.keys[0]
camelia rakudo-moar ffae3f: OUTPUT«Odd number of elements found where hash initializer expected:␤Only saw: "V\ta"␤ in block <unit> at <tmp> line 1␤␤»
geekosaur just because one p5ism works doesn;t mean they all do... feh
AlexDaniel but that's an interesting gotcha
b7j0c this bugs me....if i say V is a constant, i should get the constant back where i use 'V' or get perl6 telling me i am a bad boy 23:29
IOninja heh
b7j0c weird silent fail
IOninja b7j0c: well, => auto-quotes. So it just auto-quoted your V
There's no silent fail.
TimToady m: say pi => 3
camelia rakudo-moar ffae3f: OUTPUT«Unexpected named argument 'pi' passed␤ in block <unit> at <tmp> line 1␤␤»
IOninja Just ambiguity.
geekosaur is not sure => should autoquote any more, tbh. also precedence of unary ~ is evidently wrong for breaking the autoquote
b7j0c it isn't even consistent though...if i use the hash differently, it replaces the constant like i want 23:30
jnthn It's a purely syntactic distinction. An identifier before => autoquotes.
b7j0c perl6 silently uses a different key in two supported methods for setting a hash value
IOninja b7j0c: but it's not about the hash at all, it's about `=>` operator. In the places where it works you're not using `=>`
AlexDaniel github.com/perl6/doc/issues/1201
we can talk about it on my favorite page :) 23:31
docs.perl6.org/language/traps
IOninja heh
b7j0c i'm not feeling the TMTOWTDI moment here, more like "dude where's my car"
IOninja AlexDaniel: PS on your PR: I'd want more devs to comment on it.
AlexDaniel IOninja: sure thing 23:32
IOninja b7j0c: well, put another way. my %h = a => 42, b => 42, e => 72; would break if it willy-nilly used the constants.
Because core has `e` as a constant
b7j0c: use (V) if you meant the V. Or better still, use a proper sigil with your constant 23:33
AlexDaniel it saddens me a bit that just because some tiny wrong change was overlooked before Christmas we now have to jump through all of the hoops to get it fixed… but that's understandable
IOninja b7j0c: it's basically an ambiguity. IMO universally assuming the programmer meant a string there is less surprising. 23:34
jnthn This partiuclar one was discussed to death well before that.
b7j0c yeah i will use a sigil....but i still feel perl6 silently proceeding here is wrong....the constant without a sigil is also supported
TimToady it is working as designed
IOninja jnthn: I think AlexDaniel refers to the PR about removing @a = 42, @a; error
which is blocked by a roast test 23:35
jnthn IOninja: Ah, that one needs more thought. I wasn't entirely sold on that idea when it went it.
23:35 lep_ left, Guest89748 joined 23:36 lep-delete joined
AlexDaniel we definitely need something to prevent VMNulls from appearing there 23:36
oh wait, VMNulls are actually not related to that PR…
but still
23:37 Guest89748 left
IOninja m: constant V = 'x'; dd [ ::V => 42 ] 23:37
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
IOninja b7j0c: another variant ^ to tell it you meant the constant
23:38 kurahaupo__ left 23:39 kurahaupo__ joined
IOninja m: constant V = 'x'; dd [ Pair.new(V, 42) ] 23:39
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
IOninja m: constant V = 'x'; dd [ (V) => 42 ]
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
IOninja m: constant V = 'x'; dd [ V.self => 42 ]
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
TimToady m: constant V = 'x'; dd [ V [=>] 42 ] 23:41
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
IOninja :o
TimToady++
TimToady m: constant V = 'x'; dd [ V Z=> 42 ]
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
AlexDaniel m: constant V = ‘x’; my %h = 42 R=> V; say %h
camelia rakudo-moar ffae3f: OUTPUT«{x => 42}␤»
AlexDaniel :P
IOninja hah
TimToady m: constant V = 'x'; dd [ V RR=> 42 ]
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
AlexDaniel right!
haha :D
by the way 23:43
m: constant V = ‘x’; my %h = ~V => 42 23:44
b7j0c is there anything like "gofmt" for perl6? i always wonder if my layout is idiomatic
camelia rakudo-moar ffae3f: OUTPUT«Odd number of elements found where hash initializer expected:␤Only saw: "V\t42"␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel what is this error message talking about?
What's “V\t42”?
V and 42 I can see, but \t ?
TimToady pairs stringify with a tab
AlexDaniel b7j0c: not sure, perhaps check out github.com/jaffa4/perl6format ? 23:45
23:46 robertle left
b7j0c oh cool, i'll check that out 23:46
AlexDaniel TimToady: right! Indeed 23:47
23:47 cpage_ left
geekosaur which is why I mentioned precedence wrt the ~ 23:48
TimToady m: constant V = 'x'; dd [ V<> => 42 ]
camelia rakudo-moar ffae3f: OUTPUT«[:x(42)]␤»
AlexDaniel m: put (V => 42).gist 23:49
camelia rakudo-moar ffae3f: OUTPUT«V => 42␤»
AlexDaniel m: put (V => 42).Str
camelia rakudo-moar ffae3f: OUTPUT«V 42␤»
AlexDaniel m: put (V => 42).perl
camelia rakudo-moar ffae3f: OUTPUT«:V(42)␤»
AlexDaniel ah, I stringified it myself 23:50
AlexDaniel hides
jnthn 'night, #perl6 23:52
IOninja night
23:55 agentzh left