»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
dalek c: 9b0f023 | skids++ | lib/Type/Array.pod:
Correct the slurpies in documented signatures
00:01
dalek c: 7fb82bf | (David H. Adler)++ | lib/Type/Array.pod:
Added usage statements to Array.pod
00:25
c: b25a49a | (David H. Adler)++ | lib/Type/Array.pod:
Merge branch 'usage_statements'
c: 4f0449c | (David H. Adler)++ | lib/Type/Array.pod:
Merge branch 'master' of github.com/perl6/doc

Resolved conflicts between commit 9b0f0238fe073a050e1a31970fbd9b07106badb3 and pull request #141
[Coke] dha: IWBNI "unlike perl5" blocks were somehow marked. 00:26
(people reading perl 6 docs shouldn't need to care about perl 5 if they don't need to)
dha IWBNI?
[Coke] S99:IWBNI 00:27
it would be nice if
dha Ok, marked... how? 00:28
[Coke] with a begin/end block perhaps?
then they could be fomratted differently by default, milder for standard docs, but highlighed if someone wanted.
=begin perl5/ =end perl5
[Coke] drops off his precarious wifi. laters. 00:29
ZoffixWork \o
ShimmerFairy [Coke], dha: it would have to be spelled Perl5, since 'perl5' is reserved :) 00:31
dha . tell skids I had to resolve a conflict with your commit on Array.pod. I think I did it correctly, but take a look to make sure I didn't mess it up. 00:32
ShimmerFairy so =begin Perl5 ... =end Perl5 (and then theoretically the doc/ repo could have a module that provides the appropriate class to implement Perl5, but I don't know how the current Pod parser handles that)
dha .tell skids I had to resolve a conflict with your commit on Array.pod. I think I did it correctly, but take a look to make sure I didn't mess it up.
yoleaux dha: I'll pass your message to skids.
skids ./ 00:33
yoleaux 00:32Z <dha> skids: I had to resolve a conflict with your commit on Array.pod. I think I did it correctly, but take a look to make sure I didn't mess it up.
skids Sorry I didn't expect you'd keep editing that file.
dalek osystem/softmoth-pod-markdown: 0177c7a | (Tim Smith)++ | META.list:
Take over maintenance of perl6-pod-to-markdown

It appears that jpve is not available to maintain the module at this time, given no response on pull requests for over 3 months. I am willing to maintain the module in the mean time.
00:41
dha skids - did I at least not screw things up? :-) 00:46
skids looks fine
dha whew. thanks. 00:48
dalek c/usage_statements: 2dd4903 | (David H. Adler)++ | lib/Type/Hash.pod:
Added usage statements to C<push>
01:15
dha Hm. There's discussion of the .kv method in Hash.pod. Should it be explicitly mentioned where that comes from so someone seeing it for the first time can find the actual docs? 01:17
ShimmerFairy dha: you could provide a link on the first mention or so of .kv 01:19
dalek osystem: 0177c7a | (Tim Smith)++ | META.list:
Take over maintenance of perl6-pod-to-markdown

It appears that jpve is not available to maintain the module at this time, given no response on pull requests for over 3 months. I am willing to maintain the module in the mean time.
osystem: e1162fa | (Zoffix Znet)++ | META.list:
Merge pull request #64 from perl6/softmoth-pod-markdown

Take over maintenance of perl6-pod-to-markdown
ShimmerFairy dha: although Hash.kv does exist, so perhaps that method should be doc'd :) 01:20
dha ShimmerFairy - the first is what I was thinking, but if Hash has its own .kv, yes, that probably should be documented. 01:21
is-prime has an optional $tries argument. Can I assume that in method form, it can be used as C<$int.is-prime($tries)> or C<$int.is-prime: $tries> ? 01:36
And, of course, I assume C<is-prime $int, $tries>
skids I think it was just removed? Don't know why. 01:41
m: 3.is-prime(:tries(400)).say
camelia rakudo-moar 61d1f9: OUTPUT«True␤»
skids or something went on with it in commit 59cb611af9 01:42
dha It certainly doesn't spit at you. 01:45
skids m: is-prime(3, :tries(400)) 01:47
camelia rakudo-moar 61d1f9: OUTPUT«WARNINGS:␤Useless use of "is-prime(3, :tries(400))" in expression "is-prime(3, :tries(400))" in sink context (line 1)␤Unexpected named parameter 'tries' passed␤ in block <unit> at /tmp/oGObJVJ67w:1␤␤»
skids Because methods are tolerant, but subs are not, so the above.
dha Ah, there it is. Shall I take it out of the docs, then? 01:50
dalek c/usage_statements: 3bed9cc | (David H. Adler)++ | lib/Type/Int.pod:
Added usage statements for C<chr>, C<expmod>, and C<is-prime>
01:53
skids dha: Yes I looked at the conversation and it amounts to "we're taking it out until someone asks for it and if we put it back in it will be either a named or a different function" 01:57
dha ok. Will remove from signature and doc. 01:58
done. 02:00
dalek c: 47e2521 | (David H. Adler)++ | lib/Type/Int.pod:
Removed $tries from signature and docs of is-prime to bring docs in line
dalek c/usage_statements: 2d7c132 | (David H. Adler)++ | lib/Type/Int.pod:
Added usage statements for C<lsb>, C<msb>, and C<unival>
02:05
ShimmerFairy Apparently, trying to subclass Grammar and replacing some of its various "!..." methods (since I need to add something that needs to be shared between cursors, like $!shared) gets me an unhelpful "Unknown QAST node type NQPMu" error :P 02:12
ShimmerFairy The problem with it is that --ll-exception is useless in telling me what I did wrong, and I can't even so much as get --target=parse output 02:15
dalek c/usage_statements: cac4619 | (David H. Adler)++ | lib/Type/Pair.pod:
Added usage statements for C<antipair>, C<value>, C<cmp>, C<fmt>, C<kv>,
02:17
ShimmerFairy The 'easiest' solution I can see for now is to basically reimplement src/QRegex/Cursor.nqp, but in a pure-P6 way :/ . Seems suboptimal, but should at least be interesting. 02:21
dalek c/usage_statements: 9b0f023 | skids++ | lib/Type/Array.pod:
Correct the slurpies in documented signatures
02:28
c/usage_statements: b25a49a | (David H. Adler)++ | lib/Type/Array.pod:
Merge branch 'usage_statements'
c/usage_statements: 4f0449c | (David H. Adler)++ | lib/Type/Array.pod:
Merge branch 'master' of github.com/perl6/doc

Resolved conflicts between commit 9b0f0238fe073a050e1a31970fbd9b07106badb3 and pull request #141
c/usage_statements: 9cbd4ec | (David H. Adler)++ | lib/Type/Array.pod:
Bring Array.pod in line with commit
c/usage_statements: aeab89d | (David H. Adler)++ | /:
Merge branch 'master' into usage_statements
ShimmerFairy (btw, the easier alternative to subclassing cursors and whatnot would be to force module users to declare particular dynamic variables, but that doesn't really seem cool.) 02:30
skids Yeah I was working on something the other day tat had me in the same trace-limbo situation. 02:32
dalek c: 2dd4903 | (David H. Adler)++ | lib/Type/Hash.pod:
Added usage statements to C<push>
doc: 3bed9cc | (David H. Adler)++ | lib/Type/Int.pod:
doc: Added usage statements for C<chr>, C<expmod>, and C<is-prime>
skids (At least if you die in P6 code, you usually can figure out what died due to the error message about not being able to make the error message saying what type of exception it was trying to make) 02:33
ShimmerFairy skids: sometimes I wonder how NQP would benefit if it was developed a bit more like a real language, instead of just being a stepping stone. Things I've run into frequently include NQP-level errors (though this one is a first for being unhelpful), and NQP objects not having .gist and such. 02:37
skids Might end up being slower, though. 02:40
ShimmerFairy skids: sure, it's just the .gist issue in particular that gets annoying.
m: say Cursor.^methods 02:41
camelia rakudo-moar 61d1f9: OUTPUT«Method 'gist' not found for invocant of class 'NQPRoutine'␤ in block <unit> at /tmp/ldygB1ipq2:1␤␤»
ShimmerFairy for example ^
skids Yeah. I wonder if it would be expensive to macroize ".gist" at a P6 level and fix up NQP data structures that way. 02:43
ShimmerFairy There's nothing wrong with NQP exactly, it's just the points where NQP and P6 mix together, and don't do so very well, that's annoying. (Trying to mess with Cursor ends up bringing up this problem, since everything regex-based is rooted firmly in NQP-land) 02:44
skids wanted to use a vaguely fp sounding term for a meta behavior, decided he'd better look it up to see if it was an appropriate use, and got totally lost in wikipedia fp pages which may as well have been written in iambic pentameter by The Riddler. 02:53
dha Hm. Arrays seem to have min and max methods that are not documented. Unless it inherits it from somewhere. 03:00
skids dha: design docs say they come from List. Codewise, after GLR, they are really from Iterable. 03:04
dha They're not documented in List either. 03:05
But I'll look at Iterable
skids S32-setting-library/Containers.pod
dha Nope. not documented in Itreable either. Hm... 03:06
lichtkind good night 03:07
dha In fact, the only min and max documentation is in Range and Supply. 03:11
skids (well codewise we cheated and they are from "Any" via an augment rather than Iterable, and Any makes any non-Iterable object into a 1-list but doe not compose Iterable) 03:12
dha Yeah, not documented there either. :-) 03:13
If we ever get to the end of this class rabbit hole, we should probably document it. :-) 03:14
ShimmerFairy I think one of the biggest problems with rakudo's roles is that they're for the most part just empty roles that are effectively glorified annotations. 03:15
skids You mean most of the MetaModel things?
ShimmerFairy (And I imagine that's at least in part because you can't stub multi methods in a role to require their implementation) 03:16
skids: not Metamodel, the src/core roles. Positional, Stringy, etc.
ShimmerFairy When it comes to stubbed role methods, the RoleToClassApplier goes by name only (not checking signatures), and ignores multi methods entirely, leaving it to the dispatcher to come up with an ambiguous call error. 03:18
skids Not that there's anything wrong with using them as annotations, but probably more code would filter into them if they worked "better", yes.
ShimmerFairy skids: of course not, if you just want to use them as a 'tag', then fine. But especially the core roles should be requiring and/or defaulting methods for things doing them. 03:21
[Coke] RT: 1041; xmas: 98; testneeded: 9; glr: 4; weird: 12; lta: 87 04:26
gfldex m: my constant @fib := 0, 1, *+* ... *; @fib[^10].perl.say; 07:00
camelia rakudo-moar 61d1f9: OUTPUT«(0, 1, 1, 2, 3, 5, 8, 13, 21, 34)␤»
gfldex .tell AlexDaniel the correct correction is m: my constant @fib := 0, 1, *+* ... *; @fib[^10].perl.say; 07:01
yoleaux gfldex: I'll pass your message to AlexDaniel.
gfldex design.perl6.org/S02.html#Names_and_Variables seams to be pre-GLRish 07:14
constant @your-name-here doesn't do Positional but Seq 07:15
TimToady: you may want to have a look at ^^^
Woodi hallo #perl6 :) 07:30
writing my $output = run($command, $arg1, $arg2, :out).out.slurp-rest; is over-terrible replacement for qqx// 07:31
but removing qqx// is not necesarry 07:32
Woodi .out/.IO parts are realy needed ? 07:33
Woodi as for LINQ: I think it was MS post-SQL-embaded idea and we are quite obligated to do something post-LINQ. So: something to proces one table/array is unnecesary, we needs foreign keys integration; XML have XQuery - not having it in Perl6 LINQ would be mistake; LINQ4hash is bad, LINQ4nestedData is good 08:03
dalek kudo/nom: 18b7f1e | lizmat++ | src/core/List.pm:
Simplify List.pick

After sleeping on it, I realised that having two different classes
  + methods just to prevent a single native int to be incremented
every iteration, is a bit of overkill to get better performance.
08:14
lizmat star: say <a b c>.pick(Inf) 09:30
camelia star-m 2015.03: OUTPUT«b a c␤»
lizmat *sigh*
Ven m: say <a b c>.pick(Inf) # that works now? 09:33
camelia rakudo-moar 18b7f1: OUTPUT«Cannot coerce Inf or NaN to an Int␤ in block <unit> at /tmp/mmNsdfSFf1:1␤␤Actually thrown at:␤ in block <unit> at /tmp/mmNsdfSFf1:1␤␤»
Ven oh..
lizmat Ven: it used to work, I broke it 09:37
but there was no test for it
Ven oh!
well, when one commits that much code, something is bound to get a bit broken at some point :-).
nine Woodi: as I see it: people hate writing SQL. To be precise, they hate writing select lists and join conditions. The rest really is quite ok, since it's a very readable and even succinct way to specify queries. In Perl 6 this could result in: my $results = from $table join .relation1 left join .relation2 where .foo > 1 and .relation1.bar = 'baz' select *; 09:39
nine And I really like how we can use Whatever there to mean exactly the same in SQL :) 09:40
cognominal [Coke] what are these numbers? 09:41
cognominal [06:26] <[Coke]> RT: 1041; xmas: 98; testneeded: 9; glr: 4; weird: 12; lta: 87 09:41
geekosaur bug summary. 1041 open tickets; 98 tagged as needed for release, 9 tagged as fixed but test needed, 4 tagged as GLR-related; 12 tagged as [WEIRD]; 87 tagged as correct behavior but needing better error messages 09:42
s/needed for release/release blockers/ 09:43
geekosaur ([WEIRD] might be summarized as "That isn't right. That isn't even wrong." 09:45
)
FROGGS o/ 09:46
lizmat FROGGS \o
dalek ast: 94cbbb5 | lizmat++ | S32-list/pick.t:
Remove 5-year old obsolete test

Was testing for a named parameter whose existence would only still be known by *very* few people.
09:50
ast: 7ce4a38 | lizmat++ | S32-list/pick.t:
Add test for List.pick(Inf)
09:51
FROGGS m: my $a = "oh hai"; say $a .= "uc"()
camelia rakudo-moar 18b7f1: OUTPUT«Method '' not found for invocant of class 'Str'␤ in block <unit> at /tmp/7v4KeURejK:1␤␤»
dalek kudo/nom: 880d3c8 | lizmat++ | src/core/List.pm:
Re-add support for List.pick(Inf)

Apparently, that was supposed to work but did not have a spectest.
09:52
lizmat FROGGS: seems the method name got lost in translation ? 09:53
star: my $a = "oh hai"; say $a .= "uc"() 09:54
camelia star-m 2015.03: OUTPUT«No such method '' for invocant of type 'Str'␤ in method dispatch:<.=> at src/gen/m-CORE.setting:1370␤ in block <unit> at /tmp/AGzM819C4o:1␤␤»
lizmat looks like breakage of infix . 09:54
lizmat (well, at least at the error reporting level :-) 09:54
FROGGS lizmat: that's an old RT ticket I tackle now 09:56
lizmat ah, ok :-)
j: <a b c>.Bag.pick(*).say 09:57
FROGGS m: my $a = "oh hai"; say $a.="uc"()
camelia rakudo-jvm 18b7f1: OUTPUT«(b c a)␤»
rakudo-moar 18b7f1: OUTPUT«OH HAI␤»
lizmat j: <a b c>.Bag.pick(2).say
camelia rakudo-jvm 18b7f1: OUTPUT«(b a)␤»
FROGGS so it is just a grammar issue, and the old ticket just said that the working case should be disallowed in rakudo because std disagrees 09:58
lizmat m: map { .say; last }, *
camelia rakudo-moar 18b7f1: OUTPUT«*␤»
FROGGS but I think std is wrong here
lizmat I agree with you
FROGGS (std complains about P5 concat, which is clearly wrong IMO)
DrForr Just walked outside and to the end of the block. 09:59
lizmat yeah, I think we've reached the point where TimToady is no longer updating std, but directly works on rakudo :-)
DrForr++
DrForr: and back again, I hope ?
DrForr Of course.
FROGGS DrForr: did you trigger a phaser?
DrForr Damn, I *knew* I forgot something. Give me a few minutes. 10:00
FROGGS .oO( Just .walk'd to the OUTERS and to the END of the Block )
s/and/&&/
DrForr Yes, yes, channl theme and all ;) 10:01
FROGGS :o)
DrForr Going upstairs was decent, downstairs was the hard bit. At least I have a better idea of what to exercise now :) 10:02
AlexDaniel OK gloggle, check my email! 10:08
yoleaux 07:01Z <gfldex> AlexDaniel: the correct correction is m: my constant @fib := 0, 1, *+* ... *; @fib[^10].perl.say;
AlexDaniel .tell gfldex I find it a bit messy, but you are probably right. I've changed it as you recommended 10:11
yoleaux AlexDaniel: I'll pass your message to gfldex.
AlexDaniel Woodi: run() is not a replacement for qqx//, these are different beasts 10:16
Woodi: if removing qqx// is not necessary, do you know any example when qqx// is easier to use rather than a normal sub call (like suggested “shellout”)? 10:18
Woodi: in other words, why qqx// is even there?
ShimmerFairy There are a number of adverbs on Q that call functions on strings (e.g. :v for val(), :w for Str.words, and ISTR a :p relating to paths that's NYI), and I've not heard a convincing argument for why just :x must be removed. 10:26
And, as stated before, we have &shell and &run if you'd rather prefer sub calls. (I don't quite get what "shellout" would provide over the existing subs)
AlexDaniel ShimmerFairy: well, then maybe you have any other idea how to make this easier to type: run($command, $arg1, $arg2, :out).out.slurp-rest 10:34
ShimmerFairy AlexDaniel: ah, that's what it's for, I didn't know. I agree that that's a bit much to type :) 10:35
AlexDaniel ShimmerFairy: or how to change it so that people would first choose “run” over “shell”
ShimmerFairy
.oO(we could start by bringing back .slurp , gosh darn it! :P)
AlexDaniel I mean, run is already shorter than shell, but not shorter than qqx
Currently I'm cloning all perl6 modules to grep for qqx 10:36
because I'm still not convinced that it provides anything that could make it worth keeping 10:37
ShimmerFairy AlexDaniel: well, looking at S02, there is space for a :r/:run adverb on Q, so you could have qr// and so on for run(). Depends on if others think it could be confused with :r[atchet], I suppose. 10:38
AlexDaniel basically I'm interested in (misuse / "shell" not good enough) rate…
but somehow I feel like qqx is mostly used in user code, not in modules… 10:39
ShimmerFairy: I'm confused, how would it split arguments?
AlexDaniel opens up S02 10:40
ShimmerFairy AlexDaniel: Well, I also suggested Q:w:x (or :ww) as a way of doing run() instead of shell(), but that might be too magical for :x (so a hypothetical :r could either imply :w or require a :w or :ww, e.g. qqwwx) 10:41
nine FWIW I think quote word is a very good match for run() 10:42
my $output = Q:w:x(perl -e $code); 10:43
ShimmerFairy nine: yeah, that was my idea a bit ago: q:w:x[my args] <-> run(q:w[my args])
Ven rosettacode.org/wiki/Idiomatically_...ols#Perl_6 <- did anyone get bored enough to write a Slang::UnicodeWhitespace yet? :D
ShimmerFairy nine: you can't use parens there though, but that's the idea :)
nine One of these days I'm gonna lern Perl 6 for real :) 10:44
wooohooo!
nine@sphinx:~/install/rakudo (bool_enum *+)> perl6 -e 'say Bool::True.HOW;'
Perl6::Metamodel::EnumHOW.new
ShimmerFairy m: say q:w(a b c)
camelia rakudo-moar 880d3c: OUTPUT«5===SORRY!5=== Error while compiling /tmp/l0yJnCGU0N␤Invalid adverb value for :w(a b c)␤at /tmp/l0yJnCGU0N:1␤------> 3say q:w(a b c)7⏏5<EOL>␤»
ShimmerFairy nine: ^^^ that's why, in case you were curious. It looks like arguments to the pair 10:45
also, nine++ \o/ :)
AlexDaniel still I don't get it. "shell" basically accepts one argument – string. "run" accepts multiple arguments, that's the point. Why would it be a quoting construct – I have no idea
let's make everything a quoting construct then?
nine AlexDaniel: I'd say because program invocation usually contains quite a lot of constant string arguments 10:46
AlexDaniel nine: which is why you should use a sub – run
nine AlexDaniel: that's what makes run('perl', '-e', $code) cumbersome to write
ShimmerFairy AlexDaniel: that was in response to your lament about qqx being not shorter than run --- make another adverb that is to run() like :x is to shell()
AlexDaniel nine: what about this? run(«echo $test», :out).out.slurp-rest 10:47
nine AlexDaniel: what if $test contains white space?
AlexDaniel I've always thought that «» would handle that. I could be wrong though 10:48
or do you need quotes there?
ShimmerFairy m: my $test = "a b"; say «echo $test».perl
camelia rakudo-moar 880d3c: OUTPUT«("echo", "a", "b")␤»
ShimmerFairy m: my $test = "a b"; say «echo "$test"».perl
camelia rakudo-moar 880d3c: OUTPUT«("echo", "a b")␤»
AlexDaniel ok, you need quotes, right… 10:49
nine Having to quote all interpolated variables is just what makes this harder to use for newbies and cumbersome for oldies
AlexDaniel nine: but you have to quote it anyway, don't you?
ShimmerFairy: that's not a bad solution, actually 10:51
ShimmerFairy I don't know how the specifics would work out (I personally think it would be best if you could choose between :w and :ww, and maybe q:r runs an argless command), but I personally wouldn't mind run() getting a Q adverb too :) 10:53
AlexDaniel I think that the problem is that sometimes you might want to pipe it to some other program 10:55
for that you can set :in()
but since you have to change the code to a fullblown run(), you might feel that it is much easier to just change "r" to "x"… 10:56
AlexDaniel nine: your argument is valid if you're to say that people will just use shell("all $stuff $unquoted") rather than splitting their arguments and using "run" 10:58
ShimmerFairy well, you're not meant to use the adverbs for _everything_. I think my main objection to removing :x is that I don't see a too strong reason for getting rid of it. I get the security risks, but "it might trip people up!" isn't enough for me for :x . 10:58
AlexDaniel ShimmerFairy: but you know, I'm still waiting for a code example where qqx is all that much harder than the proposed “shellout” 11:00
and until then “security risks” is a much stronger argument 11:01
some might not agree with me, and I get it. But let's help the newbies…
ShimmerFairy AlexDaniel: I certainly don't know one off-hand. It all comes down to TIMTOWTDI: if you want to do your 'shellout' in a sub-like way, then you can. If you want to think of it as a modification on how you handle a string, then you can.
AlexDaniel: there's always documentation to help the newbies :)
AlexDaniel ShimmerFairy: oh yeah! Yesterday I've edited this rosettacode.org/wiki/Get_system_com...put#Perl_6 11:02
and maybe it's not perfect, but at least it attempts to go all explaining how you should prefer run() over something else 11:03
dalek kudo/nom: 03a9e73 | lizmat++ | src/core/Baggy.pm:
Iterify Baggy.pick/roll

And another piece of jvm specific code bites the dust!
ShimmerFairy "Unfortunately, it is very long to type," sounds a bit too subjective, but otherwise it's a nice, concise explanation :) 11:04
AlexDaniel ehhh 11:04
AlexDaniel ahaha 11:07
lizmat m: sub a { say +?$^a }; a 42; a "" # line noise in Perl 6 :-) 11:08
camelia rakudo-moar 880d3c: OUTPUT«1␤0␤»
AlexDaniel gist.github.com/AlexDaniel/176da249d1314b8cf3a9 11:09
So here I've grepped for qqx across all modules
nine AlexDaniel: my $output = qqx<mail -s $subject -c $cc -r $from $to>; # this is what people want to do and what should do the right (secure) thing
AlexDaniel What I see in that gist is a bunch of quoting errors 11:10
even when run() could have done the job just as well
I mean, not just as well, but of course much better
who is going to fix all this stuff? 11:11
some of these are not critical, I agree 11:12
But what I see is a heavy misuse… something has to be done with that… 11:14
AlexDaniel yet can anybody see anything that could not be done without qqx? 11:16
AlexDaniel nine: what do you mean, I don't get it 11:20
nine: so if $subject is 'rm -rf /', then what?
nine: I mean, '$(rm -rf /)'
AlexDaniel nine: I do understand that it is what people want to do, yet it is not going to work as expected 11:21
nine: and qqx does not help with that, so that's why I think it has to be deprecated
FROGGS that probably means that we need a shell grammar and pass the string passed to qx/qqx/(backticks?) to run() 11:21
nine AlexDaniel: qqx<mail -s $subject -c $cc -r $from $to> should just mean run('mail', '-s', $subject, '-c', $cc, '-r', $from, $to, :out).out.slurp-rest; 11:23
FROGGS that would be the final goal, yeah
ShimmerFairy I'm not sure implying :w is a good idea, though
(or :ww , in this case) 11:24
AlexDaniel ShimmerFairy: Perhaps. Any example when it does not work as expected? 11:24
I mean, sure there is redirection and stuff
qqx{$*EXECUTABLE -c $filename 2>&1}; 11:25
hm
ShimmerFairy No, I meant just in general, the only Q adverb that implies other adverbs (IIRC) would be :qq . I'm not sure having :x imply :w/:ww is a good idea, I think I'd prefer having to make that explicit
AlexDaniel ShimmerFairy: I agree 11:26
lizmat afk for a few hours&
ShimmerFairy so q:w:x or q:ww:x or ... 11:26
nine
.oO(note to self: beef up on those quoting adverb thingies before joining a discussion like this)
AlexDaniel FROGGS: I like your idea 11:30
Woodi AlexDaniel: I bet qqx is there becouse it is cute :) it's just fast way to do what user wants
AlexDaniel Woodi: yeah, like introduce shell injections! That's what user wants 11:31
FROGGS: however, it also means that it shouldn't pass anything to shell
FROGGS: in perl5 there was a similar issue – sometimes system() runs it in shell, sometimes it doesn't 11:32
I'm pretty confident that there must be a distinction
so basically your suggestion ends up with the same idea – deprecate qqx first…
nine Should Bool::True.Int return 1.Int or Bool::True (which isa Int)? 11:34
Woodi AlexDaniel: you see, it's like with any problem domain. you can to want just get stuff from db as fast as possible. same here, if someone is writing something bigger then small-script-fo-myself then he should consider other options
AlexDaniel I really don't want to defend this position as hard as I do now, but I see no other choice… I started mentioning this problem in June, I think. And now the Christmas is coming 11:35
Woodi: if you want it quick and dirty, then my suggestion is that you should use “shellout”
Woodi AlexDaniel: but if it is a way to securely ommit such problems then I'm +1 11:36
Woodi AlexDaniel: I even have no idea what shellout means 11:36
AlexDaniel Woodi: so I'm not saying that you shouldn't be able to pass stuff to shell, I'm just saying that it should be easier to do it with “run”
Woodi 'shell', ok
AlexDaniel Woodi: yeah, but
AlexDaniel Woodi: sub shellout(|c) { shell(|c, :out).out.slurp-rest } 11:37
so that the user does not have to type all that “:out).out.slurp-rest” stuff
Woodi AlexDaniel: I bet qqx is doing just that :) 11:38
AlexDaniel basically just a shortcut to “shell” that gets the output as string
Woodi: yeah, yet the Huffman coding is just right with this one 11:39
Woodi: “runout” is shorter than “shellout” :)
jnthn MESSAGES
yoleaux 2 Oct 2015 22:54Z <lizmat> jnthn: I get the feeling that any new class in the setting (like the anonymous once for iterators) make parsing the setting a lot more expensive
2 Oct 2015 22:54Z <lizmat> jnthn: possibly even O(n) :-(
jnthn eek, caps lock 11:40
.tell lizmat Could do with some measurements rather than feeling... 11:41
yoleaux jnthn: I'll pass your message to lizmat.
AlexDaniel By the way, this change is just a 3 line commit: runout, shellout and deprecation notice for qqx. I have it ready, and I will write tests, docs and whatever what is required for this change, just show me the green light :)
and pull request for the change itself, of course 11:42
Woodi AlexDaniel: shellout/runout names are bad, IMO
jnthn I don't see the names runout/shellout really flying.
AlexDaniel Woodi: I agree! Any better alternative?
jnthn Why not implement qqwx?
Woodi ` ;)
psch AlexDaniel: are you also deprecating the "Q :qq :x" form?
AlexDaniel nooooooooooooooooooooooo…
psch: basically, yes, you think that it is a wrong thing to do? 11:43
psch AlexDaniel: well, composability of adverbs seems like it's a core feature of Q, and i don't think forbidding certain combinations "because you have to be careful with them" is particularly perlish 11:44
that is assuming that the deprecation will lead to removal
oh, but i guess that was the core of the whole preceeding discussion, nvm then :) 11:45
AlexDaniel psch: yeah but my point is that you can pass whatever you want to shellout just as fine, :x should not be there 11:46
I know it sounds a bit too revolutionary, but what else
psch eh, it sounds like "we have the opportunity to remove this historical feature, so why didn't we yet" to me
AlexDaniel jnthn: FROGGS actually said that there could be a shell grammar for all that stuff
and I agree, but until then… 11:47
Woodi AlexDaniel: 'shell grammar' is code for: we don't know how to do this in general case :)
AlexDaniel psch: I'm sorry that I did not show up in 2000 or whatever it was with an RFC
psch: basically because I barely stopped shitting under myself at that time 11:48
Woodi AlexDaniel: we should hijack ppls mind with better huffman coding not worse one 11:49
AlexDaniel Woodi: that's what my change is about
psch AlexDaniel: you misunderstand (or i wasn't clear enough). i'm not saying that it's bad that it only happens now, i'm saying it's good that it happens at all
AlexDaniel oooh
well, thanks then 11:50
Woodi AlexDaniel: s/shellout/`/ and I'm with you :) 11:50
AlexDaniel Woodi: “run“ is shorter than “shell”, “runout“ is shorter than “shellout”
Woodi: but that's the whole point??
Woodi: basically you are saying that it should be easier to pass stuff to shell even when you don't need that 11:51
Woodi AlexDaniel: now I'm lost which side you are arguing... 11:51
Woodi ok, do not pass to shell ? pls explain. 11:52
execsomething ?
AlexDaniel my Str $output = qqx{$*EXECUTABLE -c $filename 2>&1};
what happens if $filename has spaces in it?
well, then you should quote it right? 11:53
that's how the typical logic goes
Woodi yes and no
AlexDaniel but no, there's no way to quote that…
because you have to escape all of the shell meta characters and stuff 11:54
Woodi what if $filename is '.todo' ?
AlexDaniel Woodi: that'd be ok?
Woodi you are starting with complicated examples and disaallow ppls to do simple things
AlexDaniel Woodi: gist.github.com/AlexDaniel/176da249d1314b8cf3a9 11:55
here I've greeped for qqx in all perl6 modules
“simple things” is a string without interpolation
that is, it's qx// (not qqx)
YET qx// will interpolate ENV variables… That's weird
Woodi AlexDaniel: that's other topic :) 11:56
AlexDaniel if you need qqx//, then it is not a simple thing
AlexDaniel because you are trying to shove your variable in there, and that's where the security issue is 11:56
and the solution? Use “run()“!
Woodi so 'qqx' is better 'qx' but failing in what it should do ? 11:57
AlexDaniel if you end up using run to do that correctly, then why did you use shell in the first place
you say “simply things” – like running some program and passing some arguments to it (even const ones)? Good, that's exactly what run() is for 11:58
simple*
I'd be glad to hear a better name for shellout and runout… outrun and outshell? Not that much better… 12:00
but the word “shell” has to be there to clarify meaning
jnthn qqx basically *is* what you want to call shellout, no?
ShimmerFairy jnthn: AIUI, the argument is essentially based on making sure the secure version is more Huffman-friendly than the insecure version. 12:01
AlexDaniel jnthn: yes pretty much, but you can also use all of the named arguments and stuff that “shell“ does. So in reality it is a shortcut for “shell” that gets the output
ShimmerFairy (which I personally don't think is a very convincing argument to get rid of :x) 12:02
AlexDaniel I find that gist pretty convincing, there is a huge amount of misuse.
dalek kudo/bool_enum: 398f255 | (Stefan Seifert)++ | src/ (3 files):
Turn Bool into a proper enum
12:03
jnthn I'd be more inclined to find a way (a qqr that implies ww semantics?) to provide a shorter form of run and get out
*output
Woodi ` pleas, pleas !
ShimmerFairy It's only misuse from a security standpoint. I still think the security issue is more appropriately solved with documentation than getting rid of language features in core you don't like. 12:04
AlexDaniel jnthn: yeah, thinking about other ways since June!
jnthn Woodi: no, we decided already to leave that for user-space circumfixes.
ShimmerFairy Or with a hypothetical :r to make Huffman happy :)
jnthn ShimmerFairy: Well, it's good if the langauge guides people towards the Right Thing
AlexDaniel jnthn: yeah!
jnthn I do agree it's unfortunate there's not a succinct way to do with run what qx/qqx currently does with shell. 12:05
ShimmerFairy jnthn: that's true, I think my main issue with the idea to remove :x is that it seems like a minimally-useful way to do that. To me, it doesn't seem like it would do much more than annoy people who've come to expect :x to be available.
AlexDaniel jnthn: and then, when you need a bit more flexibility (like specifying the input), runout can be upgraded to run in your code in a straightforward way 12:06
nine Are there known sequence related spec test errors?
AlexDaniel jnthn: which I don't think will be possible with quoting constructs
ShimmerFairy jnthn: my idea would be an :r that didn't imply :w or :ww , making that explicit: q:r for a no-argument command (how useful would that be?), q:w:r, and q:ww:r for using arguments
psch nine: i had some on jvm a few days back, but that's probably not your focus :)
AlexDaniel ShimmerFairy: the problem is that people will upgrade to qqx when they need to pipe things together 12:07
nine psch: err...no, not really :)
AlexDaniel ShimmerFairy: yet you can do that with run: doc.perl6.org/type/Proc
jnthn ShimmerFairy: Hmm
Well, it's worth thinking about. I think we can do something better than what we have now.
jnthn needs to go shopping...we're getting hungry here :) 12:08
bbl :)
ShimmerFairy AlexDaniel: if someone's natural inclination for that is to use shell syntax for redirection, that's fine with me (though teaching people that P6 Does It Better™ is of course important).
AlexDaniel jnthn: yeah, but at the same time I feel that qqx is way too short for what it does, you can't huffmanly beat that. So a deprecation notice looks like a right thing to me… 12:08
nine m: say (1...Inf)[3] 12:09
camelia rakudo-moar 03a9e7: OUTPUT«4␤»
ShimmerFairy AlexDaniel: and I suspect that at least a few people would sooner use shell() than learn run(), if you took away :x and they suddenly need redirection :P
AlexDaniel ShimmerFairy: yes, but as you've said there are people who really want to do that
ShimmerFairy: and in such case the rope is provided, I have no problem with that 12:10
AlexDaniel but throwing some rakes under the feet of users is the worst case scenario 12:10
ShimmerFairy Basically, I'm OK with adding :r to the Q lang (because having an :x/shell & :r/run symmetry would be nice), but removing :x doesn't seem like it'd do much to improve the security issue, at least to me. 12:11
AlexDaniel uhhhhhh 12:12
ok I need some food
Woodi AlexDaniel: if you have qx than user will want something what use $ 12:13
FROGGS I think we just need a short and clear name for a sub that receives and arglist that invokes run(:out)...
nine m: say Bool::False.WHAT
camelia rakudo-moar 03a9e7: OUTPUT«(Bool)␤»
FROGGS because interpolating into a string to detangle it afterwards seems errorprone 12:14
ShimmerFairy FROGGS: how about the totally-not-system-dependent name run1(...) ? :P
psch huh, we've removed the deprecation warnings for "use ...:from<java>" but still allow it..?
i suppose that ties in with RT #126088 12:15
ShimmerFairy isn't :from<foo> an important part of the use declaration? (Or am I missing something?)
nine m: say 0.WHAT === Bool::False.WHAT
camelia rakudo-moar 03a9e7: OUTPUT«False␤»
psch ShimmerFairy: :from<java> was deprecated in favor of :from<Java>
ShimmerFairy: which is what the ticket is about, for the lazy :) 12:16
Woodi nine: about: my $results = from $table join .relation1 left join .relation2 where .foo > 1 and .relation1.bar = 'baz' select *;
ShimmerFairy psch: ah, so it's just the from<> adverb assuming anyone would be silly enough to try and make a distinction between 'java' and 'Java' :P
Woodi nine: you want it to call database ?
psch i'm inclined to say ".lc the language name when registering the loader" as a resolution for the ticket, fwiw 12:17
oh, and also ".lc the :from-value when looking for a loader" of course
ShimmerFairy psch: or .fc , since that's generally the nicer way to do caseless comparison
(in Unicode land, specifically)
psch ShimmerFairy: right, Unicode land is somewhat uncharted for me :)
Woodi nine: I think it is: a) too relational dbs specific; b) cargo-culted SQL syntax (via LINQ)...
ShimmerFairy psch: so, it'd be something like given $from.fc { when "java".fc { ... } ... } , to give you an idea :) 12:18
Woodi nine: spliting it into two parts, creating structures (join tables or prepare things) and querying would be much clener 12:18
nine Woodi: do you have a suggestion? 12:19
Woodi: I don't see a problem with cargo-culting SQL syntax, since that's exactly what it should look like. SQL is good at what it does. People know SQL. I'd really just like people to do everything SQL allows for. 12:20
psch m: say &fc
camelia rakudo-moar 03a9e7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xWLPMCGXlW␤Undeclared routine:␤ &fc used at line 1. Did you mean '&uc', '&lc', '&tc'?␤␤»
psch aww :l 12:20
ShimmerFairy I don't think fc exists yet, sadly :( 12:22
m: say "FoO".fc
camelia rakudo-moar 03a9e7: OUTPUT«Method 'fc' not found for invocant of class 'Str'␤ in block <unit> at /tmp/wsCsRTQMXL:1␤␤»
ShimmerFairy (I don't think Moar even parses the UCD file that would enable .fc yet)
psch the remaining question would be if we require the module loader to be registered with the .fc name or do assume we have to do it ourselves
[Tux] test 50000 36.227 36.111 12:23
test-t 50000 39.322 39.206
ShimmerFairy I think for clarity in the code that does the actual comparison, it'd be best to have it do .fc on both.
[Tux] tux.nl/Talks/CSV6/speed4.html
ShimmerFairy (It would also let module loader writers care less :P)
psch i'll add that to the ticket 12:24
dalek kudo/bool_enum: 017c6bc | (Stefan Seifert)++ | src/core/operators.pm:
Fix SEQUENCE not expecting Bool ~~ Real to be true
12:25
psch in any case, i think complaining about wanting a specific case-ing for the :from value seems somewhat silly 12:26
i mean, i at least wouldn't want to forbid "use ...:from<jaVa>" just because 12:27
and i hope there's no two languages (that we'll be likely to support calling from) that share a fold-case
mscha p6: my $ℕ = set(1..Inf); say 42 ∈ $ℕ; 12:30
ShimmerFairy psch: that's my thinking exactly. Who would create a language called 'java' and insist to everybody that it's actually different from 'Java' ? :P
camelia rakudo-moar 03a9e7: OUTPUT«(timeout)»
Woodi nine: it is to low level. dealing with tables, troubles with joins, nulls 12:42
I prefer DataSources in MS world
Woodi and still ActiveRecords are replacement for Transaction Script Pattern and then Domain Model is replacement for ActiveRecord/Gateway pattern... 12:44
nine Woodi: trying to abstract those away is exactly why ORMs fail once you start needing recursive queries (Common Table Expressions), select statements in the from clause or even something as mundane as exists subqueries. 12:45
Or window functions
SQL and relational databases are so powerful, yet we waste cycles and developer time because ORMs optimize the most simple case and make the hard cases impossible. 12:46
Woodi nine: actually I thinking about in-memory structures/operations more then constructing specific queries... 12:48
nine Woodi: which is fine. It's just a different problem domain. 12:49
psch hm, i have something fix-ish for #119919, but that just makes #117737 more weird 12:53
i suspect a fix for the former that correctly deals with the latter needs more Perl6::Grammar-fu than i have lying around at the moment 12:54
dalek kudo/bool_enum: 31cbac7 | (Stefan Seifert)++ | src/Perl6/Metamodel/EnumHOW.nqp:
Make Bool augmentable
13:20
kudo/bool_enum: fe41cd7 | (Stefan Seifert)++ | src/Perl6/Metamodel/EnumHOW.nqp:
Fix type check for binding parameters

EnumHOW just needed an is_composed method like many other HOWs. Fixes regression in t/spec/S06-signature/optional.t
dalek kudo/bool_enum: db729c1 | (Stefan Seifert)++ | src/Perl6/Metamodel/ (2 files):
Allow for mixing into enums.

Fixes Bool but role {} and t/spec/S14-roles/mixin.t regressions
13:40
osystem/p6-HTTP-Server-Tiny: da18127 | (Tokuhiro Matsuno)++ | META.list:
Added HTTP-Server-Tiny
13:41
nine Why is this illegal? use MONKEY-TYPING; enum Weekday <Mon Tue>; augment class Weekday { } 13:49
m: use MONKEY-TYPING; enum Weekday <Mon Tue>; augment class Weekday { }
camelia rakudo-moar 03a9e7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1BCvIxk8d_␤Cannot augment Weekday because it is closed␤at /tmp/1BCvIxk8d_:1␤------> 3Weekday <Mon Tue>; augment class Weekday7⏏5 { }␤ expecting any of:␤ generic role␤»
kmel hello everyone, I am new to perl6 and was trying to install DBIish (panda instal DBIish). Unfortunately it filed (# Connect failed with error Cannot locate native library 'libmysqlclient.so': libmysqlclient.so: cannot open shared object file: No such file or directory). Any recommendations? 13:53
_itz what does locate 'libmysqlclient.so' say? 13:59
dalek ast: ecb2fb7 | (Stefan Seifert)++ | S06-currying/named.t:
Fix test failing for the wrong reason

priming-fails-bind-ok(sub (Int :$a!) { }, '$a', Int, :a); should actually fail to find a bind error since Bool is specced to be an enum with base type Int, IOW Bool ~~ Int. Change it, so it will still pass, once Bool is a proper enum.
14:06
timotimo kmel: these are "just" warnings that tell you that some tests have been skipped; if you were hoping to use mysql with dbiish, you'll probably have to install the -dev package, so that the libmysqlclient.so symlink gets added to your system 14:07
AlexDaniel and if you're on debian, then "apt-file search libmysqlclient.so" should give you the name of the required package
dalek osystem: da18127 | (Tokuhiro Matsuno)++ | META.list:
Added HTTP-Server-Tiny
14:08
osystem: 74d415c | timo++ | META.list:
Merge pull request #65 from tokuhirom/p6-HTTP-Server-Tiny

Added HTTP-Server-Tiny
AlexDaniel which is libmysqlclient-dev, I'm not surprised
kmel timotimo & AlexDaniel: Thanks. 14:13
i was missing the -dev packages 14:14
timotimo i found it a bit counter-intuitive that this is the way linux distros handle that, but whatever
psch hrm, i think for #68024, #119919 and #117737 we have to pull <circumfix> out of <coloncircumfix>
psch or rather, have coloncircumfix handle all the <circumfix> cases independently 14:14
psch 'cause it breaks in routine_def because not all <circumfix> bring a <nibble> 14:16
(well, more precise it breaks in World.colonpair_nibble_to_str)
AlexDaniel timotimo: I don't find it counter-intuitive. Once perl6 (and all of its modules) is packaged with debian, I think that installing DBIish will pull it as dependency (or at least will list it as a suggested package). If nothing on your system depends on this package, then why would you want it to be installed? 14:18
kmel Now I have a new error message (# Connect failed with error DBD::mysql connection failed: Access denied for user 'testuser'@'localhost' (using password: YES)) 14:20
AlexDaniel kmel: well! 14:21
kmel: It seems like access is denied for this user-password combo!
dalek ast/bool_enum: be773e7 | (Stefan Seifert)++ | S02-types/bool.t:
Bool is now an enum with base type Int

Fixes RT #72580
ast/bool_enum: 44e937d | (Stefan Seifert)++ | S32-exceptions/misc.t:
Enums are now augmentable

I see no reason why an enum should not be augmentable. Indeed there are tests for augmenting Bool which is an enum by spec. So remove the bogus test.
ast/bool_enum: 83c7804 | (Stefan Seifert)++ | S03-operators/relational.t:
TODOs for chaining !before and !after now pass

Don't know why though?
AlexDaniel kmel: are you sure that there is such user? Are you sure that what you are providing as a password is actually the right password? 14:22
nine .tell jnthn branch bool_enum in rakudo and roast is ready for review. Any input would be greatly appreciated :)
yoleaux nine: I'll pass your message to jnthn.
timotimo kmel: if you want the tests to run to completion, you'd need to follow the instructions in the readme - with "panda look DBIish" you can get it to check out the repository for you so you can read it 14:23
why don't we have a "panda readme" command, btw?
AlexDaniel ah it's still about tests 14:25
kmel AlexDaniel & timotimo: Sorry to bother you, I am completely new to perl. 14:27
:)
timotimo the # at the beginning tells me it's from the tests
kmel timotimo: yes tests
AlexDaniel kmel: you are welcome! 14:28
timotimo it's hard to test the database api without a running server with a user + password that the test file knows about
AlexDaniel true
kmel ok but how 14:29
timotimo first of all: do you even want to use MySQL in the first place? 14:30
kmel how do i specify which user+pass the tests should use?
timotimo ... didn't the readme once tell exactly what you had to do to make it work? 14:31
because now it doesn't
ah
it's in the test file
github.com/perl6/DBIish/blob/maste...10-mysql.t
AlexDaniel timotimo: perhaps it will be easier to skip tests? 14:32
timotimo the tests are already skipped
AlexDaniel hmmmm then why does it fail? 14:33
timotimo it doesn't fail
it just looks very explosive
kmel timotimo: I see... Let me go back to reading then.
timotimo it doesn't matter if the exit code is actually 0 if it makes warning lights and alarms and sirens go off
kmel it is actually failing. 14:34
timotimo oh?
damn
can you paste the whole output on gist.github.com or something?
AlexDaniel I'll try to install it
timotimo the only fails it should care about are the ones that say "not ok" somewhere, actually
kmel let me run the scripts you pointed in the test file and come back later 14:35
maybe this should fix the issue
timotimo perhaps 14:36
otherwise: maybe your rakudo is too old? it'd be interesting to learn what exact version you're running
(via perl6 --version)
kmel This is perl6 version 2015.09-174-ge503dfc built on MoarVM version 2015.09-39-g1434283
AlexDaniel It works for me: gist.github.com/AlexDaniel/b574f2a94d2185a44b12 14:37
timotimo ah, good, it's not old 14:38
timotimo speakerdeck.com/shoichikaji/how-to...s-with-mi6 - cool 14:43
dalek kudo-star-daily: 17d36ad | coke++ | log/ (9 files):
today (automated commit)
15:27
rl6-roast-data: 1b1c239 | coke++ | / (9 files):
today (automated commit)
rl6-roast-data: 5a1f31a | coke++ | / (9 files):
today (automated commit)
mr_ron One of the old authors of URI just posted this git joke on facebook that I thought was not bad: hugelolcdn.com/i460/356078.jpg 15:28
[Coke] (ORMS) I have never had a problem where ORM was a real solution. It always ends up getting in my way. 15:30
AlexDaniel mr_ron: whoops, forgot to stage files! 15:31
Zoffix heh
colomon Pod::To::Markdown failing one test?
[Coke] I feel somewhat meta, using a JS profiler to profile why the profiler html hangs. :| 15:36
moritz [Coke]: next up: debugging whie the JS profiler hangs whie profiling the profiler html output :-) 15:41
[Coke] moritz: sadly, the js profile output doesn't appear to help at all (using chrome. partially because none of the click throughs are showing me any JS code, and partially because I don't use angular. 15:43
moritz: so, running htmlify, even with a sparse run generates a profile that is unusuable. Adding an exit to avoid doing work to profile part of it trips a profiler bug. whee 15:45
*unusable
timotimo replacing the angular version we're using with the next minor version would probably help with the performance quite a bit, but the most naive way to do it left big parts of the thing nonfunctional :|
dalek kudo/nom: 0ac5dbc | lizmat++ | src/core/ (2 files):
Remove one argument boilerplate for new +@args
15:56
timotimo here's a suggestion 16:00
when we find the end of a quote and after that experience a syntax error of some kind, look if the first character before the end-quote is a comma %)
TimToady and what? 16:02
timotimo and alert the user that in programming languages, the comma comes after the closing quote, not before it
"that's ridiculous," timo said.
"no, that's just english," the internets said
timotimo shudders
dalek kudo/curli: d028dae | lizmat++ | src/core/Any-iterable-methods.pm:
More whitespace correction for readability
16:03
rakudo/curli: e19a521 | lizmat++ | src/core/Any-iterable-methods.pm:
rakudo/curli: Some comments + code legibility
lizmat sorry dalek 16:03
yoleaux 11:41Z <jnthn> lizmat: Could do with some measurements rather than feeling...
lizmat .tell jnthn looking at increasing parse times the past week while iterifying code: doesn't really get below 45 secs anymore :-( 16:04
yoleaux lizmat: I'll pass your message to jnthn.
lizmat .tell jnthn when it used to be around 32 not too many weeks ago 16:04
yoleaux lizmat: I'll pass your message to jnthn.
TimToady I thought it was the dynvar cache getting overwhelmed, so I measured, and found it was only 2.5% of the overhead--improvable with a better cache, but not causing the slowdown 16:05
lizmat .tell jnthn flussence also notived: irclog.perlgeek.de/perl6/2015-10-02#i_11310569
yoleaux lizmat: I'll pass your message to jnthn.
TimToady nobody's disputing the slowdown, but there are many possible causes 16:06
lizmat TimToady: jnthn asked for measurements :-) 16:07
TimToady meaning of specific possible causes, not of the slowdown
could be as simple as the GC is no longer tuned for the size of our setting, but probably not 16:09
[Coke] timotimo: updating to angular 1.2.27 seems ok 16:09
timotimo oh, neat 16:10
timotimo i've noticed a slowdown in stage parse, too 16:10
[Coke] updating all the way to 1.4.2 explodes.
timotimo but i expect jnthn was hoping for more granular measurements
TimToady could also be that we accidentally disabled an optimization 16:11
timotimo [Coke]: is the symptom that all tabs are shown at the same time and all variants of text and such?
TimToady could be that the NFAs are going O(n**3) or something
could be lots of things
[Coke] timotimo: I can work on getting us to angular 1.4 this evening. Looks like they have a decent guide on upgrading. 16:13
lizmat ok ok ok :-) I will stop throwing hunches on the channel :-)
timotimo oooooh
that would be quite fantastic!
TimToady hunches are fine, and so is suggesting we measure :)
timotimo i've heard very good things about performance in 1.4
TimToady so, I've got this talk I'm giving Monday; what would be the best example of reactive programming to show as one slide? 16:15
and the best one-slide meta-programming example?
TimToady is terrible at thinking up examples... 16:16
lizmat between the commit just before infix:<.> and now, settings parse went from 41 to 44 seconds (+7%) 16:17
meanwhile, the size of core setting went from 32172 lines to 32258 lines (.25% increase) 16:19
that's what giving me a O(n) feeling
TimToady but infix:sym<.> was already there, so that didn't change the parse at all..., and while it does now to a <.ws> lookahead, that terminates LTM, so LTM should always pick a longer dot form anyway first 16:22
TimToady so if infix:<.> is the culprit, the problem is likely to be elsewhere than NFA blowup 16:24
moritz did the new composition operator change compile time? 16:28
TimToady seems unlikey to be a large delta 16:30
I did, at some point, mark a bunch more functions as 'is pure', which could have an effect 16:32
but there have been lots of other changes as well; I remember when I first remarked upon my parse time going up 10 seconds, and it was not obvious at that point what did it 16:34
TimToady irclog.perlgeek.de/perl6/2015-09-28#i_11287048 is when I pointed it out 16:36
lizmat TimToady: it had gotten slower before that as well already, I was just taking some noticeable commit it the past 16:39
timotimo [Coke]: maybe with the new angular and better performance i'll be invigorated enough to implement some features i've wanted for a long time in the profiler ...
lizmat I mean, before it, parse time was already 40+ (when it used to be more like 32 on my machine) 16:40
Ven .ask lichtkind shouldn't that be a regexp? github.com/perl6/problem_solver_tu...n4.pl6#L25 16:40
yoleaux Ven: I'll pass your message to lichtkind.
lizmat unfortunately, I need to be afk tonight, cu tomorrow!
& 16:41
timotimo bye lizmat!
TimToady it's not the 'is pure'—backing that out makes no difference 17:03
TimToady also doesn't appear to be the infix<.> changes, based on before/after timings 17:34
psch $ ./perl6-m -e'sub infix:["@"] { say $^a, $^b }; 5@5' 17:41
55
but: "infix:[$op]" should work too, i gather
and i'm pretty sure what i did for the working bit above doesn't help getting there
on the plus, i'm not relying on <semilist> but added a token that catches this correctly
what i understand from the bits of design that talk about this is that we have a colonpair after the category the content of which are BEGIN-evaluated 17:43
jdv79 RabidGravy: figured out that lame H::UA bug
RabidGravy cool
psch the colonpair delimiters still carry most of the usual Q adverb semantics
i.e. infix:<[ ]> works as expected, infix:['{', '}'] works as it would for q[] 17:44
i'm a bit confused if infix:<<$ldelim $rdelim>> should work as expected from << >> or not 17:45
TimToady seems like it oughta 17:46
jdv79 just not sure how to test it 17:47
TimToady m: my %hash = :a; my $a = 'a'; say %hash«$a»
camelia rakudo-moar 0ac5db: OUTPUT«(True)␤»
TimToady on run(), I think the default should maybe be :out, and just optimize that away in sink context 17:48
jdv79 i guess we'd need to setup a local server and watch the back and forth
bleh
psch TimToady: is there any delimiter for sub *fix: that shouldn't interpolate to an existing compile time value? 17:49
TimToady not sure I understand the question 17:50
jdv79 no. intercepting recv.
psch actually, it's probably ang
as in, circumfix:<$l $r> is literal $l 1, 2, 3 $r 17:51
TimToady correct
are you working on making the canonical form legal perl?
psch i'm working on #68024, #119919 and #117737 17:52
TimToady well, I guess it's time to fire up the browser again; had it down for benchmarks 17:53
though I should be working on my talk, sigh...
El_Che TimToady: where are you talking? 17:58
TimToady San Francisco 17:59
special release talk sponsored by craigslist++
timotimo releasing a talk, TimToady? 18:00
TimToady only if you guys help me come up with good examples :)
El_Che TimToady: you'll tell them about Christmas? :)
TimToady well, sure
timotimo i've never exampled well 18:01
carlin m: sub foo { say "foo" }; my $t = Thread.new(code => &foo); $t.run; $t.run; 18:10
camelia rakudo-moar 0ac5db: OUTPUT«Invalid GC status observed; aborting␤»
carlin m: sub foo { say "foo" }; my $t = Thread.new(code => &foo); $t.clone.run; $t.clone.run; 18:12
camelia rakudo-moar 0ac5db: OUTPUT«Unhandled exception: Cannot invoke null object␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from gen/moar/m-CORE.setting:21755 (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:p…»
carlin m: sub foo { say "foo" }; my $t = Thread.new(code => &foo); $t.clone.run; $t.clone.run;
camelia rakudo-moar 0ac5db: OUTPUT«Unhandled exception: Cannot invoke null object␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295)␤ from gen/moar/m-BOOTSTRAP.nqp:2046 (/home/camelia/rakudo-inst-1/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::73)…»
carlin m: sub foo { say "foo" }; my $t = Thread.new(code => &foo); $t.clone.run; $t.clone.run;
camelia rakudo-moar 0ac5db: OUTPUT«Unhandled exception: Cannot invoke null object␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/share/nqp/lib/Perl6/BOOTSTRAP.moarvm:is_narrower:4294967295)␤ from gen/moar/m-BOOTSTRAP.nqp:1962 (/home/camelia/rakudo-inst-1/share/nqp/lib/Perl6/BOOTSTRAP.…»
carlin that occasionally segfaults here
jnthn .run should refuse to work more than once, and .clone on a thread should probably die telling you that's a non-sensical thing to do... 18:20
yoleaux 14:22Z <nine> jnthn: branch bool_enum in rakudo and roast is ready for review. Any input would be greatly appreciated :)
16:04Z <lizmat> jnthn: looking at increasing parse times the past week while iterifying code: doesn't really get below 45 secs anymore :-(
16:04Z <lizmat> jnthn: when it used to be around 32 not too many weeks ago
16:05Z <lizmat> jnthn: flussence also notived: irclog.perlgeek.de/perl6/2015-10-02#i_11310569
jnthn .tell nine Will review tomorrow if I have energy, or Monday if not. You've kinda changed the nature of enums a bit in the MOP, but it may be OK... 18:21
yoleaux jnthn: I'll pass your message to nine.
nine I think, the parse time regression is in NQP or MoarVM rather than rakudo
yoleaux 18:21Z <jnthn> nine: Will review tomorrow if I have energy, or Monday if not. You've kinda changed the nature of enums a bit in the MOP, but it may be OK...
nine jnthn: ok, thanks. Whenever you find some energy :)
jnthn TimToady: I'd take one of the examples from my Japan talk for async stuff (either the auto-test-runner or the juggling concurrent processes)
TimToady what about meta-programming? 18:22
debugger?
jnthn Depends what you want to focus on really.
TimToady just want to wow them and give them something to look at 18:23
jnthn If "we can add powerful new things that feel almost built in" then the OO::Monitors/OO::Actors example ain't bad - depends if you want to show *how* it's done rather than just show that it's possible
TimToady not to explain the details, but show we've thought deeply about things
jnthn Grammar::Tracer is a fairly neat example too
TimToady don't have time to go into much how
TimToady just enough time (an hour) to say here's where we've got too, and you're gonna like it 18:24
but just talking *about* p6 will be deadly, so gotta show some nifty code, both deep and every-day
psch the non-multiple-inheritance-class example from the advent posts maybe? 18:25
jnthn The MVC example ("can statically check for missing URL templates by extending the langauge") wasn't a bad one also
At end of jnthn.net/papers/2015-fosdem-static-dynamic.pdf
psch although maybe that's a bit narrow in scope, not sure
TimToady might appeal to the SF crowd, who are largely webdevs 18:26
jnthn I'm not sure I'd go with the "ooh look, we can forbid MI"...some people might point out we perhaps shoulda anyway :P
TimToady but the talk is aimed more at js, python, ruby users than at p5ers 18:27
we already have the p5ers attention :)
though I do plan to give the same talk at ppw
jnthn Well, showing js-ers that our async isn't a mess of callbacks is worthwhile :) 18:28
pink_mist is there already a neat webframework build for p6? I'm not really sure how appealing to webdevs p6 will be without one ... I think I've heard mention of P6SGI?
psch jnthn: right, forbidding MI when it's widely considered bad practice anyway is a good reason it shouldn't be an example... :) 18:29
s/forbidding/showing how to forbid/ # or w/e...
TimToady what might be a really good example of role usage? 18:30
I guess something veering into generics? 18:31
maybe that's a good place to show dogfooding in the setting 18:32
jnthn Maybe...various of my talks had examples...I can't think of one that was incredibly succinct. I guess I don't think of roles as a show-offy thing any more 'cus I got used to them :)
afk for a bit again 18:33
TimToady thanks!
DrForr pink_mist: Bailador maybe? 18:41
pink_mist nice =) 18:42
thanks
DrForr And yeah, I've heard of P6SGI but I've been somewhat out of touch for a little while. 18:43
_itz curses Visual Studio and wishes he never left the safety of UNIX 18:49
masak evenin', #perl6 19:03
FROGGS hi masak 19:04
masak I'm trying to enumerate all the grammatical things in Perl 6 that can declare stuff. here's what I have so far: variable declarations (`my`, `our`, etc), routine declarations (`sub`, etc), type declarations (`class`, `role`, `grammar`, etc), block/routine signatures (`->`, `()`), role signatures, imports (`use`, `import`, etc) 19:06
did I miss anything? :)
FROGGS constants? 19:07
masak btw, I define "declare stuff" as "introduce a name in a lexpad or package namespace"
FROGGS: constants go under the first group.
FROGGS yeah, thought so
masak but good point
FROGGS hmmm
masak I'm scouring Rakudo's grammar for things I might've missed 19:08
FROGGS hmmm, I think your list is complete 19:10
masak I should probably call "type declarations" "package declarations" instead...
FROGGS aye
masak m: sub foo($obj) { $obj.abs }; sub bar($obj) { -$obj }; say [.] -5, &foo, &bar 19:16
camelia rakudo-moar 0ac5db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tjrLFid24Y␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/tjrLFid24Y:1␤------> 3.abs }; sub bar($obj) { -$obj }; say [.]7⏏5 -5, &foo, &bar␤»
masak aww :)
m: sub foo($obj) { $obj.abs }; sub bar($obj) { -$obj }; say [-5, &foo, &bar].reduce(&infix:<.>) 19:17
camelia rakudo-moar 0ac5db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8XvjVaNKs5␤Undeclared routine:␤ &infix:<.> used at line 1. Did you mean '&infix:<∖>', '&infix:<o>', '&infix:<⊎>', '&infix:<∩>', '&infix:<<>'?␤␤»
masak aww xx 2 :/
dalek kudo/nom: 98d9b87 | FROGGS++ | src/Perl6/Actions.nqp:
fix RT #69204, allow $foo .= "bar"()
19:29
ast: 5f82bde | FROGGS++ | S03-operators/inplace.t:
test RT #69204, $foo .= "bar"()
TimToady I hope it still disallows it without the parens 19:30
FROGGS $ perl6 -e 'my $a = "oh hai"; say $a .= "uc"'
===SORRY!=== Error while compiling -e
Quoted method name requires parenthesized arguments. If you meant to concatenate two strings, use '~'.
TimToady since that's a likely P5 error
super! 19:31
FROGGS aye :o)
masak oh, that's one of mine. from 2009.
FROGGS++
TimToady maybe we can allow $a . "uc"() as well if there are parens, but we'd have to check it in the lookahead, I suspect
TimToady which means we'd have to parse the string twice, which is kinda bogus 19:32
TimToady either that, or we delay the P5 warning till later 19:32
FROGGS TimToady: what is "uc"() ?
TimToady some old P5 thing :P
FROGGS O.o 19:33
FROGGS .oO( Who are you? - Some ol' P5 thing! )
TimToady my $a = "oh hai"; say $a."uc"()
m: my $a = "oh hai"; say $a."uc"()
camelia rakudo-moar 0ac5db: OUTPUT«OH HAI␤»
FROGGS ahh 19:34
TimToady m: my $a = "oh hai"; say $a . "uc"()
camelia rakudo-moar 0ac5db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/C7J9_g3ngK␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/C7J9_g3ngK:1␤------> 3my $a = "oh hai"; say $a . "7⏏5uc"()␤»
TimToady currently disallowed
FROGGS yes, my brain parsed it differently
masak by the way, I might be fine with adding back github.com/perl6/specs/commit/9950...a69fc9e4a5 at some point. 19:35
TimToady I suppose for a heuristic we could just scan forward for a "(
masak (I saw that there was an XXX about it in the Rakudo grammar)
but I would like us to ponder whether there's a better alternative first
for example, if the main use case is to allow for commutative operators, maybe a trait would do this better
ZoffixWork Hey all. Please review this PR for a proposed new design of perl6.org: Demo website: perl6.xtatik.org/ PR: github.com/perl6/perl6.org/pull/22 20:18
moritz, ^^
moritz ZoffixWork: I like it 20:20
ZoffixWork: on first glance, the only thing that needs a bit of rework is at the bottom the "more" buttons
they have too little contrast, IMHO
ZoffixWork Sure. I can fix that. 20:23
moritz the colors are a bit muted (compared to before, at least), but it's still not boring 20:25
ZoffixWork Yeah, I've tried like 6 different palettes :) The good thing is they can be easily changed: getbootstrap.com/customize/#colors 20:27
moritz and s/unicode/Unicode/ :-)
TimToady I like it; the yellowish green kinda swears at the more bluish green color in camelia's wings, but that's a minor nit 20:28
[Coke] returns from errands and starts to poke at angular. 20:29
ZoffixWork moritz, footer buttons updated: perl6.xtatik.org/ does that look better? 20:30
TimToady so maybe a slightly different hue with the same saturation would be nicer, but then it might clash with the blue buttons
moritz ZoffixWork: aye
ZoffixWork: thanks
ZoffixWork: I want to give others the chance to chime in, and then maybe merge in a day or so 20:31
ZoffixWork Of course.
[Coke] ZoffixWork: are you the same person that was working on a redesign a month or so ago in perl6-site ? 20:33
FROGGS ZoffixWork: I like it :o)
ZoffixWork: the only thing I'd try changing is the colorset of the top bar 20:34
ZoffixWork [Coke], probably not
FROGGS, sure, they are easy to change. I suck with colours. My hope is some genius designer will pick better ones :P 20:36
FROGGS *g*
ZoffixWork Anyway. I gotta bounce, but I'm still logged in here from home as "Zoffix" and will read the log and comments on the PR :) Cheers!
FROGGS Zoffix++ 20:36
leont Hoe should temp interact with || in rules? 20:42
How
I think I'm observing it not reverting on failure of the left hand side, or is it supposed to revert with the entire rule? 20:43
Or :temp if I want to be pedantic 20:44
TimToady temp is only scoped to blocks, and not really intended for regexes 20:44
we revert things by throwing away cursors, generally, so you'd use make to store something you want to throw away later 20:45
leont I'm not sure how else to parse context-sensitive formats 20:46
That didn't parse for me
I know cursors exist and have a rough idea of what they do, but how to use them I don't have a clue
TimToady sorry, gotto go do sysadminny stuff now, maybe someone else can help 20:50
afk &
leont Basically, I need to store an indentation level somewhere 20:51
github.com/Leont/yamlish/blob/mast...h.pm6#L172
timotimo oooh that website design is neato 20:53
[Coke]: i think that was probably smls? 20:54
dalek kudo/nom: 2e92038 | timotimo++ | src/core/ (2 files):
make fail, die and Failure.new cheaper
20:57
timotimo cool, my rosettacode galton box still works :) 21:01
[Coke] finds one {{ }} that appears to kill angular1.4.x and hopes he can fix it. 21:05
timotimo: I also see we're including jquery just to get tooltips; we should be able to do those with angular bootstrap instead of jquery bootstrap 21:06
[Coke] any angular users around? 21:14
timotimo sure, throw jquery out 21:15
i don't even remember any tooltips being used in there 21:16
[Coke] aha, figured it out.
I now have a functioning version with angular 1.4.2 21:17
Need to recode one of the functions to avoid an issue, but should be easy. timotimo: anything I should be looking out for? I clicked through all the tabs, no errors. 21:18
timotimo oh? 21:28
no errors, eh?
that sounds great; can you gimme the code?
and what's the function that needs to be recoded?
does sorting the routine list feel faster? changing tabs, too? 21:29
perhaps even less ram usage?
oh that would be joyous
[Coke] timotimo: the function is backgroundColor - it is returning random values, which annoys later version of angular. 21:34
I'm trying to find a thing that I can hash to get a constant color in that $scope.
callee's name seems plausible? 21:35
nope. 21:36
masak [Coke]: I'm an angular user, and I'm around.
how may I be of service?
[Coke] I'm looking at the profiler html. there is a CallGraphController - trying to introspect the $scope object to find a unique ID I can use. 21:39
Not sure if $scopes have something inherently unique I can use, or if I need to examine the datastructure to find something. 21:40
ah, I think I have a lead; I should update backgroundColor to take the callee, and use that, not the scope. 21:45
\o/ 21:47
Ok, I have a working local copy of a profile page working.
double working? 21:48
timotimo awesome 21:50
masak [Coke]++ 21:55
[Coke] testing in a build, one sec. 22:01
[Coke] well, crap. I tried a different one liner to profile on the full build, getting new failures. 22:05
Still seems to be mostly working when clicking through, however.
timotimo: gist.github.com/coke/b1815d6a28da9dfe9e10 for the WIP 22:06
masak 'night, #perl6
cognominal Speaking of callgraph gist.github.com/cognominal/eedf4128848d4e54ab9a :) Comment on style welcome.
[Coke] timotimo: still digging. 22:08
timotimo hum. 22:16
TimToady nine: I can't seem to panda install Inline::Perl5, I get: 22:18
gcc -Wall p5helper.c `perl -MExtUtils::Embed -e ccopts -e ldopts` -shared -o /home/larry/.panda-work/1443910514_1/blib/lib/Inline/p5helper.so -fPIC -g
/usr/bin/ld: cannot find -lperl
which is odd, because I have a /usr/lib/libperl.so.5.18.2 out there, and 18.2 is what I'm invoking 22:19
FROGGS TimToady: github.com/niner/Inline-Perl5/#building
cognominal good night 22:20
TimToady okay, but it's a weird error message for that...
FROGGS TimToady: it is also possible that you need the libperl-dev package to get a libperl.so, without the version suffix
TimToady that was it 22:21
FROGGS ahh, cool 22:22
TimToady would be nice if panda could point that out somehow...
_itz I was caught by that as well .. its at least a FAQ candidate
FROGGS but it is easy to report false positives there... perhaps it should only give tips when failing
[Coke] masak: the icycle_graph_callee_renderer.html template is fiddly in angular 1.4x. depending on how complex your profiled code is, my patch is sufficient. however, more complicated code starts throwing infdig exceptions. 22:34
timotimo "infdig"? 22:41
atweiden p6: my @requested = qw<Baz Bazz BazBar FooBar>; my @found = qw<Baz Bazz BazBar>; @requested (-) @found 22:42
camelia rakudo-moar 2e9203: OUTPUT«WARNINGS:␤Useless use of "(-)" in expression "@requested (-) @found" in sink context (line 1)␤»
atweiden p6: my @requested = qw<Baz Bazz BazBar FooBar>; my @found = qw<Baz Bazz BazBar>; say @requested (-) @found
camelia rakudo-moar 2e9203: OUTPUT«set(FooBar)␤»
atweiden p6: my @requested = qw<Baz Bazz BazBar BazBar>; my @found = qw<Baz Bazz BazBar>; say @requested (-) @found 22:42
camelia rakudo-moar 2e9203: OUTPUT«set()␤»
atweiden is there a way to make that work for detecting duplicates? 22:43
[Coke] best guess right now: need to call $rootScopeProvider.digestTtl() and up the recursion limit. 22:50
[Coke] ff 23:01
woot. Fixed. 23:02
dalek p: 71dbe59 | coke++ | src/vm/moar/profiler/template.html:
Update MoarVM profiler output to angular 1.4.2

Use consistent bg color, avoid template recursion problems.
23:13
travis-ci NQP build failed. Will "Coke" Coleda 'Update MoarVM profiler output to angular 1.4.2 23:17
travis-ci.org/perl6/nqp/builds/83502339 github.com/perl6/nqp/compare/99a21...dbe59947d8
dalek kudo/nom: c52b0b3 | coke++ | tools/build/NQP_REVISION:
bump NQP to get new moarvm profile html page
23:18
[Coke] sadly, still doesn't let me bring up an htmlify run. 23:29
(From perl6/doc) 23:30