»ö« 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.
sortiz m: use NativeCall; my role Foo is array_type(Pointer) { }; my CArray[Pointer] $a; say $a but Foo; # So far so good 01:05
camelia rakudo-moar 2c552d: OUTPUT«(Pointer]+{Foo})␤»
sortiz m: use NativeCall; my role Foo is array_type(Pointer) { }; my CArray[Pointer] $a .= new(Pointer.new); say $a but Foo; # What type change!? 01:05
camelia rakudo-moar 2c552d: OUTPUT«This REPR cannot change type␤ in any mixin at gen/moar/m-Metamodel.nqp line 1300␤ in block <unit> at /tmp/EENyCZWnrr line 1␤␤»
llfourn m: role R { submethod Bool { True } }; class A does R { }; say A || "lose" # Bug I think it works if it's changed to a method in the role 04:38
camelia rakudo-moar 2c552d: OUTPUT«lose␤»
llfourn m: class A { submethod Bool { True } }; say A || "lose" # better golfing 04:43
camelia rakudo-moar 2c552d: OUTPUT«lose␤»
SmokeMachine____ How can I create multi method with ^add_method? 04:50
llfourn SmokeMachine____: .^add_multi_method
skids class A { submethod Bool { 42.say } }; say so A; role B { submethod Bool { 43.say } }; say so B; role C { method Bool { 44.say } }; say so C;
llfourn SmokeMachine____: be sure to .^compse again after doing that if the class has already been composed
SmokeMachine____ Thanks!
skids m: class A { submethod Bool { 42.say } }; say so A; role B { submethod Bool { 43.say } }; say so B; role C { method Bool { 44.say } }; say so C;
camelia rakudo-moar 2c552d: OUTPUT«42␤True␤False␤False␤»
llfourn skids: so seems to work (for classes) 04:51
it's implicit boolean context via || etc that doesn't 04:52
m: class A { submethod Bool { True } }; say A.^find_method("Bool",:no_fallback(1)).(A) 04:53
camelia rakudo-moar 2c552d: OUTPUT«True␤»
llfourn I think the problem is in Metamodel::Mixins 04:54
It only checks method_table not submethod table
nqp::existskey($new_type.HOW.method_table($new_type), 'Bool') ?? 0 !! 04:55
self.get_boolification_mode($obj));
it should just use find_method I think
skids too tired to chase that through Grammar/Actions. Should probably head to bed. 04:56
llfourn skids: go to bed :D but it's github.com/rakudo/rakudo/blob/nom/...ns.nqp#L87 04:57
(I think) 04:58
although It's not a mixin there so maybe not
but I expect it's the same mistake somewhere else
skids m: use nqp; class A { submethod Bool { True } }; nqp::say(nqp::existskey(A.^method_table, "Bool"))
camelia rakudo-moar 2c552d: OUTPUT«0␤»
skids m: use nqp; class A { submethod Bool { True } }; nqp::say(nqp::existskey(A.^submethod_table, "Bool")) 04:59
camelia rakudo-moar 2c552d: OUTPUT«1␤»
llfourn precisely
skids yeah that sounds likely.
llfourn I will RT it and see if I can make a patch 05:00
azawawi good morning #perl6 07:17
sortiz: ping
sortiz azawawi, hi. 07:18
azawawi sortiz: as requested, github.com/azawawi/perl6-memoize/b...load.t#L53 :) 07:21
github.com/azawawi/perl6-memoize/b...e.pm6#L120 # documentation
sortiz: if you can review the implementation and let me know if it working as expected, that would be great :) 07:22
sortiz: s/if it/if it is/
sortiz azawawi, great! I'll review it later and I will give feedback. 07:26
azawawi sortiz: cool... keep them coming :) 07:29
azawawi goes back to fixing perl6/doc issues
lizmat good *, #perl6! 08:51
after committing last night, I had this nagging feeling that the amount of times faster for Buf.^pun was wrong 08:53
and indeed it was, not 300x but only 17x :-(
nine "only" 17x
moritz lizmat: the good thing is, only have to speed it up another 17x to make it to total 300x :-) 08:55
lizmat yeah, but I'm afraid I will have to leave that up to jnthn
lizmat [Tux]: back from skiing in one piece, I hope? 08:57
breakfast&
[Tux] Yes :) 08:58
azawawi enjoy :)
[Tux] already building
still no CRNL or UTF8-C8 news?
RabidGravy Rarr! 09:05
[Tux] test 23.474
test-t 12.174
csv-parser 51.549
masak m: say 17 * 17 09:22
camelia rakudo-moar 2c552d: OUTPUT«289␤»
masak m: say sqrt(300) 09:23
camelia rakudo-moar 2c552d: OUTPUT«17.3205080756888␤»
FROGGS morning 09:24
RabidGravy good morning my podling buddies 09:26
azawawi =begin morning 09:29
moritz \o 09:37
azawawi: I think I've fixed the layout issues on deploybook.com/. Thanks again for your feedback
azawawi moritz: confirmed... they're now perfect :) moritz++ 09:38
should tests `use lib 'lib'` or `prove -v -e perl6 -Ilib` should be the normal procedure? 09:39
moritz azawawi: the latter 09:42
though I often include a "use lib 'lib';" in the test anyway, for convenience
why does each use of !important in CSS feels like I've lost a small battle? 09:44
FROGGS this also catches testing against an installed dist rather then testing against the modified stuff in lib/ 09:45
partly_ There is no way to say perl6 it shouldn't use ansi terminal colors for output, or is there? 09:45
moritz also, I shouldn't procrastinate by tweaking the website. Instead I should *finally* finish my slides for GPW2016
partly_: there's an environment variable, iirc 09:46
partly_: RAKUDO_ERROR_COLOR=0
FROGGS no, I think RAKUDO_ERROR_COLOR= is needed
since "0" is trueish
moritz sighs 09:47
FROGGS (we should handle "0" correctly though)
partly_ Yes it's RAKUDO_ERROR_COLOR=
May be perl6 -h should mention it? 09:48
FROGGS +1
partly_ like this → To modify the display of colors unset the RAKUDO_ERROR_COLOR 09:49
moritz unsetting doesn't help
you need to *set* it
to an empty string
partly_ set to nothing?
To disable ansi colors in the error ouput set RAKUDO_ERROR_COLOR 09:50
FROGGS and it might also mention that colors are disabled on windows by default, and need to be turned on
partly_ my issue is that I would ask myself set to what?
FROGGS yeah
we should make RAKUDO_ERROR_COLOR=0 work
m: say <0> 09:51
camelia rakudo-moar 2c552d: OUTPUT«0␤»
FROGGS m: say <0>.WHAT
camelia rakudo-moar 2c552d: OUTPUT«(IntStr)␤»
FROGGS m: say <0>.BOOL 09:52
camelia rakudo-moar 2c552d: OUTPUT«Method 'BOOL' not found for invocant of class 'IntStr'␤ in block <unit> at /tmp/GXHiq6mRAw line 1␤␤»
FROGGS m: say <0>.Bool
camelia rakudo-moar 2c552d: OUTPUT«False␤»
FROGGS m: say var('0').Bool
camelia rakudo-moar 2c552d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DbmARUgSAY␤Undeclared routine:␤ var used at line 1. Did you mean 'VAR', 'val'?␤␤»
FROGGS m: say VAR('0').Bool
camelia rakudo-moar 2c552d: OUTPUT«True␤»
FROGGS m: say VAR('0').WHAT
camelia rakudo-moar 2c552d: OUTPUT«(Str)␤»
FROGGS moritz: IMO we should treat this env var as IntStr also 09:53
because it is as unqualified as an argument to the program 09:54
partly_ m: my $f // True ?? "asd" !! "Bar; say $f
camelia rakudo-moar 2c552d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ib91CEPCu8␤Unable to parse expression in double quotes; couldn't find final '"' ␤at /tmp/ib91CEPCu8:1␤------> 3my $f // True ?? "asd" !! "Bar; say $f7⏏5<EOL>␤ expecting any of:␤ postfi…»
partly_ m: my $f // True ?? "asd" !! "Bar"; say $f 09:54
camelia rakudo-moar 2c552d: OUTPUT«(Any)␤»
FROGGS partly_: nothing assigns to $f 09:55
m: my $f //= True ?? "asd" !! "Bar"; say $f
camelia rakudo-moar 2c552d: OUTPUT«asd␤»
partly_ I'm trying to undestand src/core/Rakudo/Internals.pm:671 09:56
It says %*ENV<RAKUDO_ERROR_COLOR> // !self.IS-WIN ?? (ansicolors) !! ("", "",..);
FROGGS and the result of the expression is returned from this method 09:57
partly_ The operators doc says // is defined-or operator
FROGGS aye
partly_ but There is only one // instead of say Any // 0 // 42;
FROGGS m: my $f; say $f // True ?? 'foo' !! 'bar'
camelia rakudo-moar 2c552d: OUTPUT«foo␤»
FROGGS it is like 09:58
m: my $f; say ($f // True) ?? 'foo' !! 'bar'
camelia rakudo-moar 2c552d: OUTPUT«foo␤»
FROGGS end even more:
m: my $f; say ($f // True).Bool ?? 'foo' !! 'bar'
camelia rakudo-moar 2c552d: OUTPUT«foo␤»
FROGGS see?
partly_ m: my $f; say ($f // True) 09:59
camelia rakudo-moar 2c552d: OUTPUT«True␤»
partly_ m: my $f; say ($f // False)
camelia rakudo-moar 2c552d: OUTPUT«False␤»
partly_ m: my $f = ""; say ($f // True)
camelia rakudo-moar 2c552d: OUTPUT«␤»
partly_ ok, i think I undestand the // part 10:00
If i set RAKUDO_ERROR_COLOR=, then %*ENV<RAKUDO_ERROR_COLOR>.defined == False? 10:01
FROGGS no
defined is true
so it does not consider is-win as port of the condition of the ternary 10:02
so it calls .Bool on the (defined) env var only
which then returns False
FROGGS m: say val('0') 10:02
camelia rakudo-moar 2c552d: OUTPUT«0␤»
FROGGS m: say val('0').Bool 10:03
camelia rakudo-moar 2c552d: OUTPUT«False␤»
FROGGS aha!
that's what I'd need
testing a patch... 10:04
azawawi tadzik: ping 10:05
partly_ m: say ("0" // True) ?? say "foo" !! say "bar"; 10:05
camelia rakudo-moar 2c552d: OUTPUT«foo␤True␤»
AlexDaniel m: say ?+‘0’
camelia rakudo-moar 2c552d: OUTPUT«False␤»
partly_ m: say ("" // True) ?? say "foo" !! say "bar"; 10:06
camelia rakudo-moar 2c552d: OUTPUT«bar␤True␤»
RabidGravy right, that's a fairly worky MP3 frame parser done. If someone could just do the same with Vorbis, AAC, WebM and Opus that would be lovely. kthx
FROGGS RabidGravy: *g*
$ FOO=0 perl6 -e 'say so %*ENV<FOO>'
False
/o/
and that's the path in src/core/Env.pm: 10:07
- %ENV{$key} = nqp::p6box_s(nqp::iterval($envelem));
+ %ENV{$key} = val(nqp::p6box_s(nqp::iterval($envelem)));
nine win 1 10:08
masak manually teleports nine to window 1
nine thanks :) 10:09
partly_ Ahh now i get it "0".Bool == True, but 0.Bool == False. val Converts Str to Int and all is fine, 10:11
Took me some time, because i got distracted by _so_ :)
FROGGS cal converts the something in "0" into an IntStr, which is both a string and an int
partly_ FROGGS: thanks for the explanation. 10:12
btw val is missing from the docs. The search does not find it and it's missing in the list 10:13
FROGGS ewww :o(
so much to do and so little time :o( 10:14
partly_ m: my \x=23; say 5 x 5; 10:20
camelia rakudo-moar 2c552d: OUTPUT«55555␤»
partly_ m: my \x=23; say x 10:21
camelia rakudo-moar 2c552d: OUTPUT«23␤»
partly_ m: my \x=23; sub x() { return 42 }; say x; 10:23
camelia rakudo-moar 2c552d: OUTPUT«23␤»
masak partly_: the parser knows if it's expecting a term (your \x) or an operator (infix:<x>), and there's no ambiguity
partly_ m: my \x=23; sub x() { return 42 }; say x();
camelia rakudo-moar 2c552d: OUTPUT«42␤»
masak oh, and in the latter case, term shadows the usual meaning of `x` for `&x()` 10:24
(but don't do that -- keep your terms and subs separate, that's better) :)
partly_ masak: yeah of course.
masak m: sub foo { "OH HAI" }; enum A <b foo c>; say foo; say foo() 10:27
camelia rakudo-moar 2c552d: OUTPUT«foo␤OH HAI␤»
partly_ Hmm i can imagine that the abuse of sigilless variables can bring you in deep trouuble where not obvious things happen. 10:28
masak frankly I don't see the big deal with sigilless variables
maybe I just like sigils ;) 10:29
FROGGS and I miss nicely interpolating variables in languages that either have no sigils or dont make use of sigils 10:35
vendethiel to each their own :) 10:37
hi, #perl6.
masak hi, vendethiel 10:40
FROGGS vendethiel: it is just a missed opportunity, is all :o) 10:42
that reminds me of a PHP 7 talk 10:43
lizmat commuting&
FROGGS where the devs had two ways to implement something
FROGGS the audience wanted b) the more strickt way, but they did it the a) way which was more lax but potentially error prone 10:44
strict*
(sorry for my Germish accent) 10:45
xiaomiao FROGGS: why not both ;) 10:48
FROGGS xiaomiao: nah, in my opinion the default (perhaps only) way should lead the dev away from easy mistakes 10:49
you cant provide every feature in two or more ways
mst right. I am really quite pleased that ES6 'class' keyword enforces 'use strict' within its body even if you didn't specify 10:50
FROGGS aye
that's like the standard nowadays
xiaomiao FROGGS: well, I would appreciate gcc devs using -Werror ;) 10:51
mst yes, but I like that even if you don't know you should be doing that
using the new shiny syntax gives you it anyway
azawawi anyone online with commit rights on github.com/tadzik/Shell-Command? 10:55
FROGGS I dont have a commit bit there sadly 10:56
azawawi github.com/azawawi/Shell-Command # :) 10:56
masak hm, in the Chrome Console the use of `class` seems to be illegal unless you're already under "use strict" 10:57
mst oh, maybe I misunderstood what I read and suck
masak no, I heard the same thing
just observing what happens in practice
might be a difference between spec and implementation ;)
mst sure. or we could both suck similarly. this tends to happen to programmers who know each other, usually at the least opportune moment :D 10:58
vendethiel xiaomiao: no, never use -Werror
it's a bad idea.
xiaomiao vendethiel: if your code spews hundreds of warnings during compilation ... that's a bad smell 10:59
vendethiel your code will randomly stop compiling when you update GCC. And sometimes they add warning for spurious things. Like in GCC 6, the indentation warning.
xiaomiao especially if your code does that when self-compiling :)
vendethiel Sure; it shouldn't spew so many errors (you can limit the number of errors anyway), but -Werror without specifying explicitly which warnings should come off as errors is a bad idea.
xiaomiao gcc should compile gcc without thousands of warnings
mst the indentation warning sounds really quite handy
certainly I would be happy to opt in to it 11:00
FROGGS xiaomiao: adding -Werror for authors is okay, not so much for users which run a different/untested compiler
azawawi atom.io/packages/python-debugger # going to work on something like this soon for atom-perl6-editor-tools :)
vendethiel it does - but with -Werror, it means your code won't compile anymore
mst FROGGS: yes, and xiaomiao was saying the gcc devs should add -Werror for themselves when compiling gcc
why is everybody assuming the stupidest possible interpretation of his statement? :(
FROGGS okay, then I agree :o)
xiaomiao :D
mst makes a giant sign saying PRINCIPLE OF CHARITY and nailguns it to the channel ceiling
FROGGS uhh, with such force 11:01
mst when all you have is a nailgun, every problem looks like a messiah
azawawi :)
_nadim Morning
anyone knows why Stash doesn't have elemes as the doc states? 11:02
FROGGS _nadim: can you demonstrate what you are missing? 11:02
_nadim Hmm, actually it si an MVMContext that is missing it but it is "caught " as a Stash in thecode. 11:04
masak hey, uh, what's with this new giant sign in the ceiling? 11:06
azawawi github.com/tadzik/Shell-Command/pull/10 11:13
.tell tadzik please enable Travis CI / App 11:14
yoleaux azawawi: I'll pass your message to tadzik.
azawawi .tell tadzik please enable Travis CI / AppVeyor support. See github.com/tadzik/Shell-Command/pull/10
yoleaux azawawi: I'll pass your message to tadzik.
azawawi pressed enter too soon :)
mst masak: I think about 98% of perl6's niceness can be summed up by 'apply the principle of charity everywhere as hard as possible' 11:17
I mean, #perl6's niceness
RabidGravy it's a struggle every day believe me 11:19
azawawi github.com/perl6/doc/issues/411#is...-192623251 # please review
RabidGravy ;-) 11:20
azawawi mst: and the nailgun? :)
mst RabidGravy: if I didn't think I'd've needed reminding too, I'd've nailgunned it to FROGGS instead of the ceiling :D
RabidGravy :) 11:21
mst azawawi: wait, you think I need a *reason* to nailgun something to a flat surface?
clearly I'm not talking in here enough
RabidGravy well staple gun maybe 11:21
azawawi mst: the words nice and nailgun caught my attention :) 11:22
mst (1) I said #perl6 was nice (2) I'm the one with the nailgun (3) that's why the sign is for me too :D
RabidGravy wonders if he should stick this bitfield stuff in a separate module and release it 11:24
mst azawawi: trout.me.uk/quotes.txt - search for 'staffment'
azawawi RabidGravy: yeah a staple gun :) 11:33
azawawi mst: That's the problem with some words. One gets distracted by them and the discussion goes elsewhere :) 11:35
azawawi what color theme represents Perl 6? Perl had a blue theme to it in all of its books. Ruby has red. 11:45
mst in order to match camelia it needs to be something playful, fun, and possible to make cute, while also annoying a bunch of people in the process 11:46
I suggest a nice pastel yellow
azawawi raw.githubusercontent.com/DanBrook...-icons.png
RabidGravy pinkish
sjn azawawi: O'Reilly's color themes aren't really that important anymore imo... I don't think we should leave it to them to pick a "theme" like you mentioned 11:48
sjn wishes TPF would some serious work around that topic for once. :-( 11:49
azawawi camelia logo dominant colors are (black, blue, ...) pasteboard.co/22nSW4As.png 11:52
sjn azawawi: I'd pick the yellow one, if I only get to choose one. Then again, my aesthetic sense isn't that good :-P 11:56
mst azawawi: I was mostly being silly, mind
sjn: if somebody would convince them to actually give mdk a marketing budget to go with his position (rather than approve-everything-one-at-a-time-possibly) that might actually be doable :) 11:57
sjn thinks yellow is good because of... The King in Yellow? :)
mst was mostly joking about pastel yellow
sjn mst: yeah, that stuff needs monies and leadership will 11:58
"will to lead"
AlexDaniel m: say [2, 5, 3].shape 12:02
camelia rakudo-moar 2c552d: OUTPUT«(*)␤»
AlexDaniel m: say [2, [5, 4], 3].shape
camelia rakudo-moar 2c552d: OUTPUT«(*)␤»
AlexDaniel am I the only one who finds “whatever” to be a strange answer to that question? :) 12:04
Skarsnik look a weird defautlk 12:04
AlexDaniel m: my @a[-99;-10]; say @a.shape' # geez…
camelia rakudo-moar 2c552d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xl0yQhfoI1␤Two terms in a row␤at /tmp/xl0yQhfoI1:1␤------> 3my @a[-99;-10]; say @a.shape7⏏5' # geez…␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ sta…» 12:05
azawawi or this color for Perl 6 icons tinyurl.com/hd2k4d8 :)
Skarsnik this yellow is nice
AlexDaniel oh great, it seems like it was fixed :)
moritz m: my @a[-99;-10]; say @a.shape;
camelia rakudo-moar 2c552d: OUTPUT«(-99 -10)␤»
AlexDaniel ah…
there was a quote…
m: my @a[-20] 12:06
camelia rakudo-moar 2c552d: OUTPUT«Memory allocation failed; could not allocate 18446744073709551456 bytes␤»
travis-ci Doc build passed. Eric de Hont 'Added an entry for method shape' 12:07
travis-ci.org/perl6/doc/builds/113878669 github.com/perl6/doc/commit/283a8536435c
AlexDaniel ok I've already reported that: rt.perl.org/Ticket/Display.html?id=126800 12:08
partly_ The perl 6 compiler errors are very hard to parse with vim errorformat 13:37
also sometimes the file name and line number are given and some times not
sometimes the file name is repeated with and without line number and some times just ones the file name, but multiple line numbers 13:38
partly_ Look how different they all are gist.github.com/kalkin/cf84f21f8f50e9f962fd 13:40
kaare__ looks at the color question and wonders. 13:42
I thought Perl 6 was the rainbow of programming
llfourn partly_: are those Errors after SORRY! really not appearing on a new line? 13:43
partly_ llfourn: i thought this is the default? Only the missing module message (first one) has no message after SORRY 13:44
llfourn partly_: I feel your pain (a bit), we probably need to do a better job making Exceptions consistent 13:45
they are defined here github.com/rakudo/rakudo/blob/nom/...ception.pm ( in case you are not aware )
I'd say PRs for more consistent error messages are more likely to be enthuastically accepted than other things because they don't affect versioning 13:46
or at least IMO they don't :P
partly_ llfourn: well the issue is that from the human point of view, they are completly okay. But an IDE would preffer to have something different to parse
llfourn partly_: Right. But I'd say for example, sometimes errors appearing on a new line after SORRY! and sometimes not is something that could be fixed 13:47
partly_ In the linked gist the second example is a perfect example of a human readable error. For a compiler you normally would repeat the file name
llfourn: I will have a look at that 13:48
or in general at the Exception.pm
now need to get groceries :)
llfourn I agree with you that making them consistent so that they can be parsed with the line no and file being in the same place each time would make sense
RabidGravy RARR! 14:19
m: sprintf "%08b", +^(0b00011000) 14:23
camelia ( no output )
RabidGravy m: printf "%08b", +^(0b00011000)
camelia rakudo-moar 2c552d: OUTPUT«00-11001»
RabidGravy that's entirely not what I expected
I think there may be two bugs there 14:24
AlexDaniel RabidGravy: beauty :) 14:25
masak I agree that looks very wrong 14:26
just out of curiosity, though -- what did you expect?
RabidGravy well, I'd hoped that it would be "11100111"
but for any reading of "two's complement" that's not right and the printf is broken given the bogus result 14:27
masak m: say +^0b00011000 14:28
camelia rakudo-moar 2c552d: OUTPUT«-25␤»
masak m: say 0b11000
camelia rakudo-moar 2c552d: OUTPUT«24␤»
masak m: say 0b11111111 - 0b11000 14:29
camelia rakudo-moar 2c552d: OUTPUT«231␤»
AlexDaniel partly_: it was decided that error messages should be human-readable in the first place 14:35
partly_: and the whole machine-readable part was left behind as non important…
IMO it is a huge problem 14:36
SmokeMachine____ does any one know why is it giving P6opaque error on the second attribute? www.irccloud.com/pastebin/19SqhrnQ/ 14:38
_nadim Is it possible to give a junction in a given/when?
AlexDaniel maybe a more general solution would be to have some kind of a special mode that will wrap error messages in some special characters or something 14:38
partly_: I think that bug reports like “I'm trying to parse *this* but it is nearly impossible” will be taken care of, eventually. Or feel free to fix that stuff yourself :) 14:41
jnthn AlexDaniel: More likely, just serialize the exception object (.perl or so) and spit that out. That's part of the reason for them being objects in the first place, so machines can process them. 14:42
AlexDaniel jnthn: right 14:43
RabidGravy indeed
jnthn Maybe some environment variable can be set to request that.
Then no need to go parsing stuff out of text at all. :)
AlexDaniel that's even better
llfourn SmokeMachine____: try not calling .^compose on the clazz, it's going to be composed anyway at the end.
psch help, hack is dying (again) 14:44
"load average: 805.83, 798.81, 781.14"
moritz, FROGGS?
llfourn SmokeMachine____: though that might not be the problem lets start there :)
AlexDaniel m: given 10 { when 5|10 { say ‘hallo’ } }
camelia rakudo-moar 2c552d: OUTPUT«hallo␤»
AlexDaniel m: given 100 { when 5|10 { say ‘hallo’ } }
camelia ( no output )
AlexDaniel _nadim: why not?
jnthn llfourn: It's likely to be the problem. You can't add attributes to a class after it's been composed. 14:45
AlexDaniel _nadim: or you mean other way round?
jnthn But a trait shouldn't be doing the composition.
moritz psch: killall?
SmokeMachine____ llfourn: that worked like a charm!
RabidGravy so my best bet for inverting a bit pattern is actually XOR it with "all the bits"
llfourn me++
RabidGravy llfourn++
SmokeMachine____ llfourn: thanks!
psch moritz: my user has irssi and ~9 vim buffers running
well, and two screen sessions 14:46
RabidGravy m: say sprintf "%08b", 0b11111111 +^ 0b00011000
camelia rakudo-moar 2c552d: OUTPUT«11100111␤»
psch (and a hanging perl6-j and ps now too...)
SmokeMachine____ llfourn: any idea why that was working?
llfourn: *any idea why that was happening?
llfourn SmokeMachine____: read what jnthn++ said :)
FROGGS ewww 14:47
psch moritz: i did see collectd in ps, but i guess we're beyond "can become workable without soft reset" again :S
_nadim AlexDaniel: because I want to make sure. In my simple tst it works, as I expected it to, but in another piece of code it doesn't. I need to look at where my error is more carefuly I guess.
SmokeMachine____ thank you all!
psch ...well, not that collectd is really related there
llfourn SmokeMachine____: you are composing the class after adding the first attribute so when you try and add the attribute the next time and compose it goofs
AlexDaniel m: given 10|15 { when 10 { say ‘hallo’ } }
camelia rakudo-moar 2c552d: OUTPUT«hallo␤»
AlexDaniel m: given 10|15 { when 15 { say ‘hallo’ } }
camelia rakudo-moar 2c552d: OUTPUT«hallo␤»
AlexDaniel m: given 10|15 { when 25 { say ‘hallo’ } } 14:48
camelia ( no output )
AlexDaniel _nadim: ↑ it works
SmokeMachine____ llfourn: yes, makes sense!
skids m: my $c = -> { once 42.say; my $d = 1.rand; sleep $d; $d.say; once say "43 $d"; }; start { $c() }; $c(); sleep 1;
camelia rakudo-moar 2c552d: OUTPUT«42␤0.452358791016134␤0.775707954734534␤43 0.775707954734534␤»
llfourn SmokeMachine____: the class will be composed anyway when the compiler gets to its closing '}'
skids wonders if once is threadsafe.
jnthn skids: no, nor is state
Well, "because state isn't" more like
skids By design or NYI? 14:49
jnthn By design
You can explicitly clone the closure to get a fresh state var per thread
skids But you can't ever rely on one state among ultiple threads not double-hitting, right? 14:50
SmokeMachine____ thanks! 14:51
jnthn skids: No, you can't rely on that.
skids OK, I think that deserves doccing. Thanks.
_nadim AlexDaniel: Not in the piece of code I have in front of me. I'll do some scaffolding to check everything, again. 14:55
pmurias do we want to allow setting open(nl => "", ...) to read things in paragraph mode?
like setting $/ = "" does in Perl 5? 14:56
there is an open issue for that: github.com/MoarVM/MoarVM/issues/193
AlexDaniel _nadim: well, golf it down and we will have a look :) 14:58
masak pmurias: good question
masak pmurias: I guess it depends whether we consider it a hack or an admirable DWIM that "" does that ;) 14:58
moritz ok, I'll force-reboot hack 15:02
pmurias .tell it's not DWIM to me as I wouldn't ever expect that without looking it up 15:12
yoleaux pmurias: What kind of a name is "it's"?!
pmurias .tell masak it's not DWIM to me as I wouldn't ever expect that without looking it up
yoleaux pmurias: I'll pass your message to masak.
pmurias .tell masak it seems to be something inherited from awk 15:13
yoleaux pmurias: I'll pass your message to masak.
_nadim well, there's not much to gold down. In simple examples it works, in my code it doesn't. nopaste.linux-dev.org/?975775. that code doesn't work but when the lines that are comment out are part of the code it works 15:15
and you can see that the commented lines are what the junction should match.
dalek c: 162598a | skids++ | doc/Language/ (2 files):
Doc per-clone behavior of state/once and mention not threadsafe
RabidGravy skids++ 15:16
psch m: sub f { (<A B C>) }; given 'A' { when any(f()) { .say } } 15:18
camelia rakudo-moar 2c552d: OUTPUT«A␤»
psch m: class C { method m { (<A B C>) }; method foo { given 'A' { when any($.m()) { .say } } } }; C.foo
camelia ( no output )
psch m: class C { method m { (<A B C>) }; method foo { given 'A' { when any(self.m()) { .say } } } }; C.foo
camelia rakudo-moar 2c552d: OUTPUT«A␤»
psch _nadim: seems like the $ shorthand for self doesn't work right there 15:19
_nadim psch: you are right 15:20
psch m: class C { method m { (<A B C>) }; method foo { given Any { when any(self.m()) { .say } } } }; C.foo
camelia ( no output )
psch m: class C { method m { (<A B C>) }; method foo { given Mu { when any(self.m()) { .say } } } }; C.foo 15:20
camelia ( no output )
psch err 15:20
...what did i even want to figure out with that
_nadim that it would not match ;) 15:21
psch m: class C { method m { (<A B C>) }; method foo { say any($.m()); say any(self.m()) } }; C.foo # something like this, maybe... 15:22
camelia rakudo-moar 2c552d: OUTPUT«any((A B C))␤any(A, B, C)␤»
psch seems like $. instead of self. adds an item context there
m: class C { method f { 1 }; method foo { say $.f.perl; say self.f.perl }; C.foo 15:23
camelia rakudo-moar 2c552d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/l4gZ4yly1E␤Missing block␤at /tmp/l4gZ4yly1E:1␤------> 3{ say $.f.perl; say self.f.perl }; C.foo7⏏5<EOL>␤ expecting any of:␤ statement end␤ statement modifier␤ stateme…»
psch m: class C { method f { 1 }; method foo { say $.f.perl; say self.f.perl } }; C.foo
camelia rakudo-moar 2c552d: OUTPUT«1␤1␤»
psch m: class C { method f { (1) }; method foo { say $.f.perl; say self.f.perl } }; C.foo
camelia rakudo-moar 2c552d: OUTPUT«1␤1␤»
psch m: say &any.signature.perl
camelia rakudo-moar 2c552d: OUTPUT«:(+ is raw)␤»
skids m: class C { method f { (1,) }; method foo { say $.f.perl; say self.f.perl } }; C.foo 15:24
camelia rakudo-moar 2c552d: OUTPUT«$(1,)␤(1,)␤»
psch i do remember that there's supposed to be a difference between $.m() and self.m(), but i have no idea if that's the right difference :) 15:24
psch moritz: thanks for the hack reboot, before i forget :) 15:25
_nadim psch: any idea where that could be documented? 15:26
_nadim or anyone else who knows? 15:27
because if it is not it is a bug
_nadim Dmping a CallFrme was a joyous trip, beween the internals sipping out, this and Mu, the God of nothing, I amstarting to wonder if I am not a bit masochist. 15:29
skids _nadim: it is specced at least: "$.foo(1,2,3); # calls self.foo under $ context" 15:31
_nadim and how would, in this case, $ context differ from self context? 15:32
skids By itemization
psch m: say any((1,2)).perl; say any(1,2).perl 15:33
camelia rakudo-moar 2c552d: OUTPUT«any(1, 2)␤any(1, 2)␤»
psch m: say any($(1,2)).perl; say any(1,2).perl # 15:33
camelia rakudo-moar 2c552d: OUTPUT«any($(1, 2))␤any(1, 2)␤»
skids that's single arg rule.
_nadim I'll burn that somewhere in my brains 15:35
partly_ AlexDaniel: i will see what i can do 15:50
[Coke] wonders if he will ever get irssi to come back "as was" post reboot. 16:07
[Coke] half the freenode windows show up but then aren't connected to a channel. 16:09
nine adding the netwos and servers with auto and then /save went a long way for me in that regard 16:10
_nadim has anything happened to the ecosystem? like moved to another repository. 16:15
moritz nope 16:16
_nadim thanks 16:18
partly_ when running perl6 -c is it possible to have more than one Exception at a time? (I differentiate between exceptions and errors, because Undeclared routine is _one_ exception, but it can contain _multiple_ errors) 16:27
partly_ All will the compiler barf at the first exception? 16:27
s/All/Or/g
Skarsnik not sure, compile time is already rather complex 16:28
partly_ And some times it will printout the same exception twice o_O 16:29
psch well, -c is "stop after stage parse" 16:30
partly_ m: sub foo($b) is export { bar() }
camelia rakudo-moar 2c552d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/JHU0IonMC9␤Undeclared routine:␤ bar used at line 1. Did you mean 'VAR', 'bag'?␤␤»
psch which btw includes *running* BEGIN blocks
i think "only the first exception" falls straight out of one-pass-parsing, though 16:31
similar to how Eclipse won't complain about missing identifiers in a string with a missing end delimiter - because that means the rest of the file is the string and the only error that can be found is "missing end delimiter for literal string"
or somesuch 16:32
[Coke] (same exeption twice) that was a precomp bug which is, I believe fixed. 16:32
partly_ Intersting, if i have an Undeclared routine called in a module and run perl6 -c lib/My/Module.pm, the exception is printed once, if i run perl -c t/01-basic.t which uses My::Module, the exception is printed twice
[Coke] partly_: what version of rakudo are you running? 16:34
partly_ This is Rakudo version 2015.12-242-g8bd7ee6 built on MoarVM version 2016.01
partly_ ok it's to old 16:34
partly_ [Coke]: thanks for the hint, now it's gone 16:39
ugexe seems like a precomp related error. most perl6 code should work on that rakudo if it works on the current 16:48
dalek kudo/nom: 0ad8b36 | lizmat++ | src/core/Rakudo/Internals.pm:
Make RAKUDO_ERROR_COLOR=0 work as expected

This was I guess one of the last places we forgot to change when the string "0" because True rather than False.
Also create Rakudo::Internals.NUMERIC-ENV-KEY(\key) helper method.
16:49
lizmat s/because/became 16:50
dalek osystem: c49fb36 | (Nadim Khemir)++ | META.list:
Update Data::Dump::Tree to v1.0.1
16:51
osystem: 060e7f1 | (Fritz Zaucker)++ | META.list:
Merge pull request #164 from nkh/master

Update Data::Dump::Tree to v1.0.1
buharin hi 16:55
RabidGravy m: my $a = (((1 +< 2) - 1) +< (8 - (2 + 0))); my $b = ((2^8) - 1) +^ $a; say sprintf "%08b", $b 16:59
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
psch m: my $a = (((1 +< 2) - 1) +< (8 - (2 + 0))); my $b = ((2^8) - 1) +^ $a; say $b
camelia rakudo-moar 2c552d: OUTPUT«one(193, 199)␤»
RabidGravy another unexpected result in the family of bitwise stuff
psch m: say sprintf one(1,2)
camelia rakudo-moar 2c552d: OUTPUT«one(1, 2)␤»
psch RabidGravy++
that's amazing
moritz RabidGravy: is that a weird mesage for an overflow? 17:00
RabidGravy don't think so 17:00
psch oh
2^8
was that supposed to be one(2,8) 17:01
RabidGravy m: say 0b00111111
camelia rakudo-moar 2c552d: OUTPUT«63␤»
psch or 2**8?
m: my $a = (((1 +< 2) - 1) +< (8 - (2 + 0))); my $b = ((2**8) - 1) +^ $a; say $b
camelia rakudo-moar 2c552d: OUTPUT«63␤»
psch m: my $a = (2^8) - 1; say sprintf "%08b", $a
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
RabidGravy m: my $a = (2^8) - 1; say sprintf "%016b", $a 17:02
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
psch m: sprintf "%08b", (1|1) - 1
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
psch m: sprintf "%08b", (1|1)
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
psch yeah, Junctions into sprintf 17:03
psch i'd guess because the sprintf handler is in NQP or something 17:03
RabidGravy but there shouldn't be a junction there
psch RabidGravy: 2^8 is one(2, 8)
m: say 2^8
camelia rakudo-moar 2c552d: OUTPUT«one(2, 8)␤»
RabidGravy but there isn't in my code? 17:04
psch "my $b = ((2^8) - 1)4~
well, it's what appears here vOv
psch well, the 4~ was supposed to be a " 17:05
psch irclog.perlgeek.de/perl6/2016-03-05#i_12142632 logs agree :S 17:05
RabidGravy what the actual ..... ? 17:06
timotimo hmm
lizmat m: printf "%d",one() # shortest golf so far
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
RabidGravy it's 2 <asterisk> <asterisk> 8 as what I typed
psch m: printf "%d",1|1
camelia rakudo-moar 2c552d: OUTPUT«P6opaque: get_boxed_ref could not unbox for the representation '20'␤␤»
psch RabidGravy: spooky irc client..?
RabidGravy no, it's doing it in vim too 17:07
okay I'm going stupid 17:08
never mind
dalek kudo-star-daily: a7620be | coke++ | log/ (9 files):
today (automated commit)
17:11
kudo-star-daily: 5620aa5 | coke++ | log/ (8 files):
today (automated commit)
psch yeah, probably something about how it's handed over to NQP 17:12
r-j throws an NPE for < printf $fmt, $junc >
timotimo o/ 17:13
partly_ The print_exception() in src/core/Exception.pm is pretty complicated. Why are some exceptions printed via their gist, while others are handled differently?
And how do the VERBATIM-EXCEPTION fit in? 17:14
timotimo probably --ll-exception
partly_ ok ic 17:16
psch m: sub f($, *@a) { .WHAT.say for @a }; f(1, 1|1) 17:17
camelia rakudo-moar 2c552d: OUTPUT«(Junction)␤»
psch i think that's behind the printf error
AlexDaniel what is one?
psch i'm pretty sure that shouldn't be a Junction anymore
AlexDaniel ah
I see
timotimo interesting, so maybe auto-currying doesn't work with slurpy arguments properly?
psch m: sub f(@a) { .WHAT.say for @a }; f 1|1
camelia rakudo-moar 2c552d: OUTPUT«Type check failed in binding @a; expected Positional but got Int (1)␤ in sub f at /tmp/0tw79ep9oQ line 1␤ in sub f at /tmp/0tw79ep9oQ line 1␤ in block <unit> at /tmp/0tw79ep9oQ line 1␤␤»
psch m: sub f(*@a) { .WHAT.say for @a }; f 1|1
camelia rakudo-moar 2c552d: OUTPUT«(Junction)␤»
psch timotimo: i guess there's a missing junc_or_fail somewhere..? 17:18
timotimo no, it just seems like it properly binds
psch oh, right, junc_or_fail is after type checks...
timotimo m: sub F(*@a) { .WHAT.say for @a }; F Mu, Mu
camelia rakudo-moar 2c552d: OUTPUT«(Mu)␤(Mu)␤»
psch slurpies are too accepting /o\ 17:19
timotimo ^- if this succeeds, junctions will never be auto-threaded
psch yeah, but even slurpies should auto type to Any, shouldn't they
m: sub F(Any *@a) { .WHAT.say for @a }; F Mu, Mu
camelia rakudo-moar 2c552d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Iv7RwGcpvT␤Slurpy positional parameters with type constraints are not supported␤at /tmp/Iv7RwGcpvT:1␤------> 3sub F(Any *@a7⏏5) { .WHAT.say for @a }; F Mu, Mu␤ expecting any of:␤ const…»
psch hrm 17:20
timotimo i suppose it's because it really just slurps up everything. it could also have lazy lists passed to it 17:20
so type-checking isn't something we can guarantee we always do
RabidGravy really it's just a nicer error message required 17:23
psch RabidGravy: i don't know if it's *just* that 17:28
RabidGravy: i mean, for the sprintf case i'M inclined to agree - i don't know how sprintf with a Junction should work otherwise
but the general case means either using Junctions or using slurpies
psch and then you might overlook that you're using a module that uses slurpies but decide to use Junctions yourself... 17:29
hrm 17:30
psch actually, i guess all of that is fine if you don't end up somewhere that Junctions don't work 17:30
azawawi AlexDaniel: ping
psch m: print (1|1)
camelia rakudo-moar 0ad8b3: OUTPUT«any(1, 1)»
azawawi AlexDaniel: close(open(close(open))) :)
psch m: say 1 + (1|1) 17:31
camelia rakudo-moar 0ad8b3: OUTPUT«any(2, 2)␤»
psch ...there's probably a lot of discussion about this somewhere in the clog :) 17:32
RabidGravy: fwiw, would 'Junction passed to &sprintf - please don't do that' or similar have helped you right then?
RabidGravy yeah, I'd actually copied some (working) code from one place to another and somehow changed the ** to a ^ without even noticing 17:34
I mean I should have noticed that I was getting an unexpected junction in the result but then I got more confused with the debugging output I put in
psch m: printf "%d", 1..* 17:36
camelia rakudo-moar 0ad8b3: OUTPUT«Cannot .elems a lazy list␤ in block <unit> at /tmp/ZsnKMLfX2R line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/ZsnKMLfX2R line 1␤␤»
psch ...i think i don't like our current &printf :/
AlexDaniel azawawi: mmm?
psch well, maybe i can get that better... gonna make a few notes now and look into it over the next few days 17:37
dalek c: 6f0c118 | lizmat++ | doc/Language/5to6-perlvar.pod:
Make 5to6 docs for @INC/%INC slightly better
17:40
AlexDaniel azawawi: what does this close/open thing mean? :) 17:42
lizmat getting too far away from the coast& 17:45
TreyHarris is "chmod $mode, $file or die ..." still the preferred idiom for subs like that that return a falsey on failure? 17:53
psch m: say so [] 17:55
camelia rakudo-moar 0ad8b3: OUTPUT«False␤»
psch TreyHarris: if you're using exactly one file for chmod i'd say yes
TreyHarris: chmod has a slurpy though, so if you use it for more than one file i'd compare the argument to the return value and complain then 17:56
TreyHarris psch: of course. otherwise it would have to be a more complex return anyway and I'd probably be better off creating IO::Path's and looping through them, then I'll get an exception on any that are problems
psch something like < my @files = get_files(); my @chmodded_files = chmod $mode, @files; die unless @files eqv @chmodded_files > or so
note i'm not sure eqv does exactly what i mean there :)
TreyHarris *nod* I think making path objects and using the method that throws is easier 17:57
RabidGravy visually it sometimes helps to do "if .... { } else { die ... }" in a larger subroutine 17:58
psch in any case, those two approaches should work for any CORE sub that doesn't throw itself on failure
RabidGravy it also makes it easier to add some recovery or cleanup later 17:58
RabidGravy the "die" is after all "control flow" albeit leaving through the window rather than the front door 18:00
psch "die" feels more like "leaving through all walls in any direction, no matter how deep inside the building" :D 18:01
azawawi 38 days current github contribution steak github.com/azawawi/ :)
s/steak/streak/ :)
RabidGravy Mmmmm contribution steak
azawawi i was like contribution steak is better :) 18:02
RabidGravy I once reached 104 then went on holiday
azawawi RabidGravy: then im going to break the 104 barrier :) 18:03
RabidGravy that's healthy competition 18:04
azawawi and going to change to nick to SteakGravy :) 18:05
psch has 7 days longest streak 18:07
it was an accident
azawawi btw it changes with time, so you cant prove it... :( 18:12
azawawi so eventually your streak will be over 18:12
ugexe you can just set your clock back to the day you missed and send a commit 18:13
RabidGravy I'm also looking for competition on the ecosystem front, there are only 3 people who have released more than half of the number
okay some of mine are utter bilge but better out than in as they say
azawawi RabidGravy: i hate the current travis ci/appyveyor support... we're basically wasting time testing rakudo all time lol 18:14
RabidGravy: basically it is rakudobrew build moar && prove -v -e perl6 -Ilib 18:15
azawawi ugexe: maintaining contribution streaks can sometimes mean delaying commits also :) 18:17
azawawi sub foo is delayable { }; foo() # prints "I will do it later. I promise" :) 18:19
psch m: use nqp; sub trait_mod:<is>(Routine $r, :$delayable!) { $r.add_phaser('ENTER', -> { say "i'll do it later, promise"; exit }) }; sub foo is delayable { }; foo() 18:22
camelia rakudo-moar 0ad8b3: OUTPUT«i'll do it later, promise␤»
psch err, that 'use nqp' is actually superfluous vOv
...also, that trait probably should be called something like 'delayed_indefinitely', actually
m: use nqp; sub trait_mod:<is>(Routine $r, :$delayable!) { $r.add_phaser('ENTER', -> { say "i'll do it later, promise"; exit }) }; sub foo is delayable { }; foo(); say "alive" 18:23
camelia rakudo-moar 0ad8b3: OUTPUT«i'll do it later, promise␤»
azawawi psch: :) 18:24
psch++
AlexDaniel azawawi: open close open close? 18:29
azawawi AlexDaniel: :)
AlexDaniel azawawi: I didn't get it :)
azawawi AlexDaniel: the ticket ... 18:30
AlexDaniel azawawi: ah right. Want me to reopen it again? 18:31
:)
azawawi github.com/perl6/doc/issues/407 :)
AlexDaniel azawawi: at first I thought that close(open(…)) was some kind of a golfed down perl 6 code that is supposed to compile :D 18:32
azawawi AlexDaniel: sorry for not being clear about but doc.perl6.org/language/5to6-perlfunc contains little documentation. And skids told me earlier that /routine/printf will look bad 18:33
AlexDaniel: in the sense that it is not really Perl6ish
AlexDaniel: my understanding is 5to6-perlfunc are for backward compatibility 18:34
AlexDaniel azawawi: then why do we have doc.perl6.org/routine/sprintf ?
azawawi now that i dont understand :)
AlexDaniel or even doc.perl6.org/routine/abs 18:35
azawawi ok will do it :)
azawawi delays plans for Perl 6 debugger to fix it :)
AlexDaniel I've always felt that 5to6 document is for Perl 5 programmers. That is, if you don't know Perl 5 then you should never have to open it 18:36
BenGoldberg m: sub trait_mod:<is>(Routine $r, :$doomed!) { die "doomed" }; sub foo is doomed { say 'alive' };
m: sub trait_mod:<is>(Routine $r, :$doomed!) { die "doomed" }; sub foo is doomed { say 'alive' }; foo();
camelia rakudo-moar 0ad8b3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/E0FSE6ZVFE␤doomed␤at /tmp/E0FSE6ZVFE:1␤»
rakudo-moar 0ad8b3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/h4v1SYSQD0␤doomed␤at /tmp/h4v1SYSQD0:1␤»
BenGoldberg abs is needed, since people will, at some point, be trying to optimize by using 'int32' instead of 'Int', and of course you can't call methods on native integers. 18:37
azawawi BenGoldberg: :) 18:39
AlexDaniel azawawi: and I think that indexing 5to6 page is a great temp solution … until we actually document everything 18:40
AlexDaniel azawawi: but I've seen enough “wtf is Perl 5 I don't want to know it to know Perl 6” complaints that I'm pretty sure that 5to6 page is not something we should rely on 18:42
azawawi AlexDaniel: i see 18:47
AlexDaniel: what do you think of this UI for a Perl 6 debugger atom.io/packages/python-debugger ?
azawawi AlexDaniel: that guy convert swift-debugger to python-debugger and now im going to convert python-debugger into perl6-debugger :) 18:48
azawawi AlexDaniel: s/convert swift/converted swift/ 18:49
TreyHarris :m my $p = "test".IO; $p.spurt("test");
azawawi m: my $p = "test".IO; $p.spurt("test");
camelia ( no output )
TreyHarris azawawi: oops. thanks. 18:50
azawawi TreyHarris: np
TreyHarris m: my $p = "test".IO; $p.spurt("test"); $p.spurt("test2", :createonly);
camelia rakudo-moar 0ad8b3: OUTPUT«Failed to open file /home/camelia/test: file already exists␤ in any at /home/camelia/rakudo-m-inst-1/share/perl6/runtime/CORE.setting.moarvm line 1␤ in block <unit> at /tmp/bt8w0hlZ5T line 1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamod…»
TreyHarris what's the easies way to see what exception type that was?
jdv79 any reason why hashes aren't mentinoed on doc.perl6.org/language/containers?
azawawi AlexDaniel: but we need to give it a separate namespace (e.g. 5to6func/printf ) ; otherwise we're going to get conflicts 18:52
TreyHarris m: my $p = "test".IO; $p.spurt("test"); try { $p.spurt("test2", :createonly); CATCH { default { say .perl } } }
camelia rakudo-moar 0ad8b3: OUTPUT«X::AdHoc.new(payload => "Failed to open file /home/camelia/test: file already exists")␤»
TreyHarris interesting; why's that AdHoc?
azawawi TreyHarris: doc.perl6.org/type/X::AdHoc
ugexe m: try { CATCH { default { say $_.perl; }; die "xxx"; }; 18:53
camelia rakudo-moar 0ad8b3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/mbN6Z9HDHJ␤Missing block␤at /tmp/mbN6Z9HDHJ:1␤------> 3 default { say $_.perl; }; die "xxx"; };7⏏5<EOL>␤»
RabidGravy okay you maths and/or CS graduates, is there a more succinct way of expressing :
ugexe m: try { CATCH { default { say $_.perl; }; }; die "xxx"; };
camelia rakudo-moar 0ad8b3: OUTPUT«X::AdHoc.new(payload => "xxx")␤»
RabidGravy m: sub min-size($f) { for 8,16,32,64,128 -> $pow { if $f < (2**$pow) - 1 { return $pow } }}; say min-size(98); say min-size(8903)
camelia rakudo-moar 0ad8b3: OUTPUT«8␤16␤»
TreyHarris azawawi: no, I understand that a die throws an X::AdHoc, but why doesn't spurt throw an X::IO:: of some sort? 18:54
RabidGravy because no-one got around to it yet
TreyHarris ok 18:54
RabidGravy possibly there are tests that check the exception type that need to be changed, or something 18:55
Skarsnik hm, another crash with h::ua, but no openssl output this time 18:57
Skarsnik I don't get why I get another output after the crash x) gist.github.com/Skarsnik/33f2bc8f34ea0da022d9 19:00
RabidGravy Skarsnik, it's getting nothing back from the recv when getting the "header chunk" 19:04
it could be made to crap out noisier and earlier 19:05
*but* there does need to be an easily repeatable test case to determine where best to catch this 19:08
so instrumenting back up the line from the "multi method new(Blob $header-chunk)" backwards with the actual content of the Blob would be useful 19:09
Skarsnik This should probably throw correctly on empty content github.com/sergot/http-useragent/b...t.pm6#L246 19:10
RabidGravy yes it should, that's why seeing exactly what's in the $header-chunk at that point is the only way to get to the bottom of it 19:11
there could be "unexpected garbage" in there for instance
Skarsnik well it does nothing to check if this get nothing
or does the $conn object should be responsible to throw? 19:12
RabidGravy right, it should and if there is *nothing* in the $header-chunk it should have already crapped out, that's why seeing what's in there would be very useful 19:13
jdv79 has anyone looked into what isn't documented yet in the setting? 19:14
i think there's a script for nqp to report that - is thare one for src/core?
RabidGravy if it's completely empty then a) we should throw an exception before we get that far and b) someone should look to fixing the unhandled condition in OpenSSL that lets it get like that 19:15
RabidGravy if there is *something* in there then we need to know what to determine whether we need to try harder to get a complete header, fix up the constructor for HTTP::Response to find the bits or just throw an exception in a more controlled manner 19:17
I do agree that it shouldn't be failing on passing unacceptable stuff to its own constructor
Skarsnik what give the size of $t ? 19:19
.chars ?
yoleaux ?
moritz jdv79: iirc there's a tool in perl6/doc repo, but it's mostly useless (doesn't deal well with multis) 19:20
Skarsnik I mean, what is common with Str and Buf to get the size? 19:20
timotimo Buf has .elems, Str has .chars, .codes, ...
RabidGravy yeah
timotimo that's by design 19:21
you're not supposed to think of a Str as a list of little things, except if by thins you mean graphemes
Skarsnik Yes, but in this case it's annoying to not have a common method
azawawi good night everyone 19:22
RabidGravy why?
azawawi &
Skarsnik then you have to test if it's a Str or not x)
RabidGravy test what?
Skarsnik well it should be a Buf in this case
moritz what's the use case? 19:23
I mean, you can't simply treat Bufs and Strs the same anyway
jdv79 moritz: ok
Skarsnik I remember when adding the debug stuff on UA I had to know if it's a Buf or a Str to display the size
RabidGravy Skarsnik, in the loop in H::UA.get-response it *must* be a Blob
Skarsnik it's elems? 19:24
I mean there is no .bytes?
RabidGravy I don't want the elems, I want the actual whole content when it fails
sevvie disco. 19:25
RabidGravy if it's empty then it's interesting, if it has stuff in it then the content is interesting
the number of bytes is not interesting in this case (unless it is zero)
timotimo i think we also offer .bytes, which multiplies .count with the size of an individual element 19:25
Skarsnik what are the possible encoding with decode? 19:27
I added say "GET-RESPONSE {$t.elems}: ###" ~ $t.decode("ascii") ~ "###"; 19:29
let's see if it crash again x)
ugexe i'd probably just MONKEY-TYPING/augment or .wrap() IO::Socket::INET.print/recv to get a full log 19:31
RabidGravy I'd say almost certainly the first recv isn't returning anything 19:33
but I'm not precluding a bunch of garbage 19:34
Skarsnik it's ssl in this case (discord stuff is https)
AlexDaniel .tell azawawi well, I don't use Atom so I can't tell. It's also very hard for me to imagine switching to atom after all emacs/vim experience I had. So I am not the right person to answer this question ;)
yoleaux AlexDaniel: I'll pass your message to azawawi.
ugexe so IO::Socket::SSL then
RabidGravy infact it's easier than wrap, I think the $conn is given a role to ensure a consistent interface, could just implement recv in the role and callsame the real one, get the output and log it 19:36
yary Hi... what does the "constant" mean in "my $a='aaaa';my constant $b=$a; say $b" and why is $b undefined (Any)? 19:42
sevvie $a is set at runtime, whereas $b is is set at compile time. Because $a is undefined at compile time, $b is being assigned that undefined value. (I think. I'm a little high.) 19:47
yary thanks, that's about what I figured out from experimenting too
perl6: my $a; BEGIN { $a='aaaa' } my constant $b=$a; say $b 19:48
camelia rakudo-moar 0ad8b3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Strange text after block (missing semicolon or comma?)␤at /tmp/tmpfile:1␤------> 3my $a; BEGIN { $a='aaaa' }7⏏5 my constant $b=$a; say $b␤ expecting any of:␤ infix␤ in…» 19:49
..rakudo-jvm f99bdb: OUTPUT«cannot connect to eval server: Connection refused␤»
timotimo SDL2-raw's repository now has a cute little particle system demo
wamba p6: say " There".match( /^^ \s* There/ )           19:50
camelia rakudo-moar 0ad8b3: OUTPUT«「 There」␤»
TreyHarris how can I suppress the backtrace for end-user-facing thrown exceptions? I've tried perl5-style die(.message, "\n"), but a newline doesn't do it. 19:51
wamba say " There".match( /^^ <?after \s*> There/ )
p6: say " There".match( /^^ <?after \s*> There/ )
camelia rakudo-moar 0ad8b3: OUTPUT«Nil␤» 19:52
sevvie p6: die X::IO::DoesNotExist.new(:path("foo/bar"), :trying("zombie copy")); CATCH { when X::IO { say "expecting a backtrace?" } } 19:57
camelia rakudo-moar 0ad8b3: OUTPUT«expecting a backtrace?␤»
sevvie TreyHarris, ^^ 19:57
RabidGravy or just 19:57
sevvie TreyHarris, that's from doc.perl6.org/language/exceptions 19:58
RabidGravy CATCH { default { say $_.message; exit }} 19:58
RabidGravy at the outest scope 19:58
sevvie RabidGravy++ # saving me typing 20:01
wamba p6: say " There".match( / <?after ^^ \s*> There/ ) 20:07
camelia rakudo-moar 0ad8b3: OUTPUT«Nil␤»
AlexDaniel m: say ‘x’.match( / <?after ^> x/ ) 20:30
camelia rakudo-moar 0ad8b3: OUTPUT«Nil␤» 20:30
AlexDaniel wamba: hmm, so is it a bug? 20:32
FROGGS m: say ‘x’.match( / <?before ^> x/ ) 20:39
camelia rakudo-moar 0ad8b3: OUTPUT«「x」␤»
RabidGravy gets me every time that one ;-)
FROGGS well, I dunno if it is correct or not 20:40
Hotkeys weird
RabidGravy I think that is the documented behaviout
m: say ‘x’.match( / <?after $> x/ ) 20:41
camelia rakudo-moar 0ad8b3: OUTPUT«「x」␤»
RabidGravy jeez that's really slow poor server
moritz just tried his GPW talk for the first time. 45 Minutes (it's a 40 min slot) 21:34
so with a few more attempts, and speaking faster due to stage fever, it'll end up as 32 minutes or so in the end :-) 21:35
timotimo not bad! 21:36
so you'll be able to answer some questions, too
jdv79 maybe next nyc p6 meeting some peeps from here could pop into the other irc chan we use. 21:38
hackathon on magnet
dalek osystem: d93b46f | RabidGravy++ | META.list:
Add Util::Bitfield

See github.com/jonathanstowe/Util-Bitfield
21:44
RabidGravy gotta keep the tempo up 21:45
also thas me 40th module, maybe I should just stop
moritz why stop?
Hotkeys ^^^ 21:47
RabidGravy It's a never ending tesseract of a rabbithole, that ^ was because of the MP3 frame parser which I started because of the Streaming server which I started because I couldn't test Audio::Libshout properly ;-)
Hotkeys I still havevn;t done anything past 1 module
AlexDaniel sits quietly in the corner with 0 modules 21:50
Skarsnik lol RabidGravy 21:53
Laurent_R Hi, all. I have been watching discussions here from time to time, but never intervened actively. So, my first intervention, with a question. I hope this is the right place for my question. Trying infinite recursion in Perl 5, with a subroutine like: sub recurse { recurse();}, I get the "100 levels deep in subroutine calls!" message. Just tried the same in Perl 6, and BANG! Anyone has an idea... 22:01
...why I did not get any "infinite recursion" message?
Skarsnik Probably because it's not checked x) 22:02
RabidGravy Perl6 prefers "well don't do that then" rather than stopping you from doing it 22:05
Laurent_R OK, fair enough, thanks. 22:07
timotimo Laurent_R: we don't have a recursion limit. you'll just end up allocating too many frames and your heap will flow over 22:22
dinner time \o/
timotimo Laurent_R: in a few months' time we'll let you run that exact code forever without running out of memory, i think 22:26
AlexDaniel timotimo: like? Any plans for TCO?
timotimo trace jit might give us this for free
Skarsnik damn this perl6 script kill my vm by filling the ram x)
timotimo or at least at very low cost 22:27
Laurent_R Well, thank you, it seems that I actually ran out of memory. But anyway, I thought that the Perl 5 message was a good protection against a silly mistake. You can remove the limit with a no strict recursion pragma (or whatever it is exactly), I wished we had a similar protection in Perl 6. Anyway, I know now I have to be more careful in Perl 6.
timotimo mhm 22:28
we could implement a frame depth counter
RabidGravy well you could do it yourself right now couldn't you? 22:29
timotimo yeah, but only for frames you have control over
AlexDaniel Laurent_R: honestly I don't see how it protects you from something. More like it makes your script die when you have a plenty of memory left. 22:30
timotimo well, i'd be for making the recursion limit like 5k or so 22:31
Laurent_R AlexDaniel: yeah, you're right. Still, it protects against killing the session.
AlexDaniel if you are afraid of trying to allocate too much memory then I'll tell you a secret: there are many other ways to do that 22:32
lucs Can I tell panda to "install the code that is found in my cloned repo of a module that I modified for some reason"? 22:32
And if not, how do I install that modified code? 22:33
Skarsnik panda install . ?
lucs Oh, that simple, eh, trying... 22:33
lucs Skarsnik: Yep, looking good, thanks. 22:33
AlexDaniel 5k limit is pretty fair, actually 22:34
Skarsnik damn nobody write something to interact with twitter 22:35
Laurent_R AlexDaniel: also it is better in my view to have my program aborting with a proper diagnostic of the problem than just silently dying silently.
timotimo i don't think it actually dies silently 22:36
i think it says "malloc failed" or something
AlexDaniel m: sub recurse() { recurse if $++ < 5000 }; recurse; say now - BEGIN now
camelia rakudo-moar 0ad8b3: OUTPUT«2.05444032␤»
AlexDaniel m: sub recurse() { recurse if $++ < 5000 }; recurse; say now - BEGIN now
timotimo don't forget, invocation is currently way too expensive
and will be improved in the future
camelia rakudo-moar 0ad8b3: OUTPUT«2.0354796␤»
AlexDaniel star: sub recurse() { recurse if $++ < 5000 }; recurse; say now - BEGIN now
RabidGravy m: sub foo() { if Backtrace.new.elems > 25 { die "You screwed up"}; foo() }; foo()
Oops, I broke it 22:37
AlexDaniel no, I guess it was mep
camelia star-m 2015.09: OUTPUT«1.73563714␤»
rakudo-moar 0ad8b3: OUTPUT«You screwed up␤ in sub foo at /tmp/vosg4k9Gpj line 1␤ in sub foo at /tmp/vosg4k9Gpj line 1␤ in sub foo at /tmp/vosg4k9Gpj line 1␤ in sub foo at /tmp/vosg4k9Gpj line 1␤ in sub foo at /tmp/vosg4k9Gpj line 1␤ in sub foo at /tmp/vosg4k9Gpj li…»
AlexDaniel me*
m: say ‘hello’
camelia rakudo-moar 0ad8b3: OUTPUT«hello␤»
AlexDaniel can anybody help camelia? There's something wrong with her
she is very slow today 22:38
RabidGravy it's the weather, phase of the moon, cosmic rays or something 22:39
AlexDaniel timotimo: actually, 5k is probably too low. On my machine there is no problem with 100k recursion depth, or so it seems. 22:42
timotimo mhm 22:43
well, just saying 100 is way too low
Laurent_R Agreed, 100 is really too low. 22:44
partly_ m: say "FoB\n".substr(0, *-1); 22:49
camelia rakudo-moar 0ad8b3: OUTPUT«FoB␤»
timotimo m: say "FoB\n".chomp.perl 22:50
camelia rakudo-moar 0ad8b3: OUTPUT«"FoB"␤»
timotimo m: say "FoB".chop.perl; say "FoB".chomp.perl # interesting difference, btw 22:51
camelia rakudo-moar 0ad8b3: OUTPUT«"Fo"␤"FoB"␤»
timotimo chop chops anything, chomp chops only newlines
partly_ thanks! 22:52
AlexDaniel m: say chop ∞ # cool, I didn't know about chop 22:55
camelia rakudo-moar 0ad8b3: OUTPUT«In␤»
RabidGravy right, time for bed here. toodles.
Hotkeys I would like this syntax 23:47
m: sub circumfix:<⌊ ⌋> ($a) {floor($a)}; say ⌊3.4⌋
or not
Hotkeys slaps camelia
camelia rakudo-moar 0ad8b3: OUTPUT«(timeout)»
Hotkeys weird 23:48
[Coke] sees bdf is a little salty on stack overflow
timotimo hm? 23:49
Hotkeys why did that take so long on camelia
is it the unicode
timotimo ah, brian
sjn m: sub circumfix:<⌊ ⌋> ($a) {floor($a)}; say ⌊3.4⌋ 23:50
camelia rakudo-moar 0ad8b3: OUTPUT«(timeout)»
sjn yeah, weird 23:51
sjn works fine for me with my local install 23:51
timotimo [Coke]: i can't put my finger on it, but his posts on SO kind of make me angry 23:56
what's wrong with me?
well, i've been having a bad day, so that might be it
BenGoldberg std: sub circumfix:<⌊ ⌋> ($a) {floor($a)}; say ⌊3.4⌋ 23:57
camelia std : OUTPUT«No such file or directory»
BenGoldberg std: say 'alive'
camelia std : OUTPUT«No such file or directory»
std : OUTPUT«(timeout)cat: /home/camelia/std/snap/revision: No such file or directory␤#perl6 <BenGoldberg> std: say 'alive'␤»
BenGoldberg ? 23:58
timotimo STD isn't alive at the moment
like, at all.