»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:00 MilkmanDan joined 00:03 bjz_ left 00:05 johnjohn101 joined
johnjohn101 hi perl 6 00:05
timotimo greetings
johnjohn101 perl 6 will have it's own cpan? 00:06
its
timotimo we currently have modules.perl6.org, but we've got someone working on making metacpan work with perl6's modules, and some efforts going on in that general cpan-y area in general 00:07
00:13 zacts joined 00:16 mcmillhj joined
avuserow_ bisect: say DateTime.now.Str.chars 00:23
bisectable6 avuserow_, On both starting points (good=2015.12 bad=6e84a5e) the exit code is 0 and the output is identical as well
avuserow_, Output on both points: 32
avar timotimo: who's working on the metacpan thing? 00:25
timotimo i seem to recall it's jdv79 00:26
avuserow_ does DateTime format timestamps without microseconds on some OSes? 00:27
I'm investigating test failures when trying to install Log::Minimal and the timestamp pattern expected in the tests doesn't have them, so trying to figure out why that might be 00:28
00:29 cdg left
timotimo heads towards bed 00:32
00:33 BenGoldberg joined 00:36 n1lp7r joined 00:38 djbkd left 00:43 BillSussman joined 00:45 AndyBotwin left 00:51 kentnl is now known as kent\n 00:53 n1lp7r left 00:59 cpage_ left 01:01 pierre_ joined, rkazak left 01:02 sufrostico joined
bioduds guys, anyone meta-programming with perl6? 01:02
I could not interpolate an array 01:04
in heredocs
is TimToady there? 01:06
01:08 bioduds left, perlawhirl joined, bioduds joined
perlawhirl hi bioduds 01:08
bioduds hi perlawhirl 01:09
perlawhirl how are you interpolating... try @arr[]
inside double-quotes, @var is not automatically interpolated
this is so things like email address just work
01:09 cognominal joined
bioduds I tried to simply output its value my \$.names = set < System @.cur-tables >; 01:09
perlawhirl the work around is to use the zen slice: @arr[]
01:09 pisa joined
bioduds oh, I'll do that 01:09
so it should say my \$.names = set < System @.cur-tables[] >; 01:10
perlawhirl well.. i'm not sure about the meta-programming stuff... just talking about heredocs and double-quotes in general. give it a shot 01:11
bioduds sure will
im meta-programming with heredocs so I may write indented code 01:12
BenGoldberg I thought meta-programming was writing a program which writes a program?
01:14 pisa left
perlawhirl that's also my interpretation. 01:14
bioduds: if it's still not working, provide a gist of what your trying to do and what's not working 01:15
timotimo < and > don't interpolate at all, do they? 01:16
m: say < $foo @bar[] >
camelia rakudo-moar 998e2b: OUTPUT«($foo @bar[])␤»
timotimo m: say << $foo @bar[] >>
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$foo' is not declared␤at <tmp>:1␤------> 3say << 7⏏5$foo @bar[] >>␤»
timotimo << and >> do interpolate
01:17 rkazak joined 01:19 kashyap_ joined, Actualeyes left 01:22 TEttinger left 01:25 TEttinger joined 01:26 sufrostico left 01:33 zacts left, cognominal left, cpage_ joined, Actualeyes joined 01:35 cpage_ left 01:36 cpage_ joined 01:37 parabolize joined 01:38 cpage_ left
benjikins What do I do about malformed utf-8 01:38
BenGoldberg Throw an exception, usually. 01:41
Or return a Failure. 01:42
benjikins could I remove all malformed characters possible? 01:43
possibly*
01:44 araujo_ joined 01:46 ilbot3 left, cpage_ joined 01:47 ilbot3 joined 01:48 bob777 joined 01:53 mcmillhj left 01:59 raoulvdberge left 02:03 mcmillhj joined 02:07 noganex_ joined, mcmillhj left 02:10 awwaiid joined, noganex left 02:12 zacts joined
bioduds BenGoldberg meta-programming is writing a program that writes a program 02:14
exactly
and the program you write may be in perl6 writing another perl6 02:15
in this case
SmokeMachine____ Hi! Im having trouble with trusts... 02:16
bioduds worked perlawhirl, thanks a lot
SmokeMachine____ m: class Bla {...}; class Ble {trusts Bla; has $!private = "priv"}; class Bla {has Bla $.ble .= new; method say-ble-priv{$!ble.private.say}}; Bla.new.say-ble-priv
camelia rakudo-moar 998e2b: OUTPUT«Memory allocation failed; could not allocate 1016 bytes␤»
BenGoldberg That looks like a bug.
02:17 mcmillhj joined
SmokeMachine____ and I have a question: How could I do that in 2 different files? 02:18
if I write the Ble class on a file (with the Ble stub) and the Ble in another file it dies with "The following packages were stubbed but not defined:" 02:19
is there any way to simulate 2 different files here with camelia? 02:21
02:22 mcmillhj left, perlawhirl left 02:23 lambd0x left
SmokeMachine____ problem with 2 files www.irccloud.com/pastebin/E75Qqzdi...0and%20Ble 02:24
02:26 benjikins left
SmokeMachine____ BenGoldberg: should I open a bug report? 02:29
how can I do that?
02:32 cyphase left
MasterDuke huggable: bug report 02:34
huggable MasterDuke, nothing found
MasterDuke huggable: bug
huggable MasterDuke, nothing found
MasterDuke huggable: RT
huggable MasterDuke, nothing found
MasterDuke huggable: report a bug
huggable MasterDuke, nothing found
MasterDuke SmokeMachine___: send an email to [email@hidden.address] 02:36
02:36 wamba joined 02:38 kashyap_ left 02:39 Actualeyes left, Actualeyes joined
SmokeMachine____ m: class Bla {...}; class Ble {has $.public = "pub"}; class Bla {has Bla $.ble .= new; method say-ble-priv{$.ble.public.say}}; Bla.new.say-ble-priv 02:41
camelia rakudo-moar 998e2b: OUTPUT«Memory allocation failed; could not allocate 1016 bytes␤»
SmokeMachine____ that's not a "trusts" problem...
02:43 rkazak left 02:45 mcmillhj joined 02:50 mcmillhj left 02:53 TEttinger left, TEttinger joined
BenGoldberg m: class Bla {has Bla $.ble .= new}; Bla.new; 02:55
camelia rakudo-moar 998e2b: OUTPUT«Memory allocation failed; could not allocate 14464 bytes␤»
02:55 Girafferson joined
BenGoldberg SmokeMachine____, ^ 02:56
SmokeMachine____ BenGoldberg: :(
bioduds do roles have constructors? 02:57
BenGoldberg Well, it's not a rakudo bug... You're saying that any time a new Bla object is made, initialize the $.ble field it with a new Bla object. 02:58
Every Bla has a Bla, in an infinite linked list.
SmokeMachine____ BenGoldberg: but on my code, Bla has Ble, but Ble doesn't have Bla... It shouldn't be a loop... 03:00
m: class Bla {has Bla $.ble .= new; method say-ble-priv{$.ble.public.say}}; class Ble {has $.public = "pub"}; Bla.new.say-ble-priv 03:01
camelia rakudo-moar 998e2b: OUTPUT«Memory allocation failed; could not allocate 131072 bytes␤»
BenGoldberg The very first part of your code, right there, is "class Bla {has Bla $.ble .= new;" 03:02
03:02 zacts left
SmokeMachine____ hum!!! misspelled! 03:02
m: class Bla {has Ble $.ble .= new; method say-ble-priv{$.ble.public.say}}; class Ble {has $.public = "pub"}; Bla.new.say-ble-priv
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5===␤Type 'Ble' is not declared. Did you mean 'Bla'?␤at <tmp>:1␤------> 3class Bla {has Ble7⏏5 $.ble .= new; method say-ble-priv{$.ble␤Malformed has␤at <tmp>:1␤------> 3class Bla {has7⏏5 Ble $.ble .= new; method say-ble…»
SmokeMachine____ m: class Bla {...}; class Ble {has $.public = "pub"}; class Bla {has Ble $.ble .= new; method say-ble-priv{$.ble.public.say}}; Bla.new.say-ble-priv 03:03
camelia rakudo-moar 998e2b: OUTPUT«pub␤»
SmokeMachine____ that's working!
BenGoldberg This is one reason why so many people use "foo" and "bar"
It's a touch harder to mispell one as the other.
03:03 _slade_ left
SmokeMachine____ m: class Foo {...}; class Bar {trusts Foo; has $!private = "priv"}; class Foo {has Bar $.bar .= new; method say-bar-priv{$!bar.private.say}}; Foo.new.say-ble-priv 03:04
camelia rakudo-moar 998e2b: OUTPUT«Method 'say-ble-priv' not found for invocant of class 'Foo'␤ in block <unit> at <tmp> line 1␤␤»
SmokeMachine____ m: class Foo {...}; class Bar {trusts Foo; has $!private = "priv"}; class Foo {has Bar $.bar .= new; method say-bar-priv{$!bar.private.say}}; Foo.new.say-bar-priv
camelia rakudo-moar 998e2b: OUTPUT«Method 'private' not found for invocant of class 'Bar'␤ in method say-bar-priv at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
SmokeMachine____ m: class Foo {...}; class Bar {trusts Foo; has $!private = "priv"}; class Foo {has Bar $.bar .= new; method say-bar-prig{$!bar!private.say}}; Foo.new.say-bar-priv 03:05
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤No such private method 'private' for invocant of type 'Foo'␤at <tmp>:1␤------> 3$.bar .= new; method say-bar-prig{$!bar!7⏏5private.say}}; Foo.new.say-bar-priv␤»
BenGoldberg m: class Foo {...}; class Bar {trusts Foo; has $!private = "priv"; method !private { return-rw $!private }}; class Foo {has Bar $.bar .= new; method say-bar-prig{$!bar!private.say}}; Foo.new.say-bar-priv 03:07
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤No such private method 'private' for invocant of type 'Foo'␤at <tmp>:1␤------> 3$.bar .= new; method say-bar-prig{$!bar!7⏏5private.say}}; Foo.new.say-bar-priv␤»
BenGoldberg m: class Foo {...}; class Bar {trusts Foo; has $!private = "priv"; method !private { return-rw $!private }}; class Foo {has Bar $.bar .= new; method bar-priv{$!bar!private}}; Foo.new.bar-priv.say 03:08
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤No such private method 'private' for invocant of type 'Foo'␤at <tmp>:1␤------> 3Bar $.bar .= new; method bar-priv{$!bar!7⏏5private}}; Foo.new.bar-priv.say␤»
BenGoldberg m: class Foo {...}; class Bar {trusts Foo; has $!private = "priv"; method !private { return-rw $!private }}; class Foo {has Bar $.bar .= new; method bar-priv{$!bar::private}}; Foo.new.bar-priv.say
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Attribute $!private not declared in class Foo␤at <tmp>:1␤------> 3.= new; method bar-priv{$!bar::private}}7⏏5; Foo.new.bar-priv.say␤ expecting any of:␤ horizontal whitespace␤ …»
BenGoldberg m: gist.github.com/BenGoldberg1/20888...fa7c6d32aa 03:11
camelia rakudo-moar 998e2b: OUTPUT«B.new(a => A.new(foo => 42))␤»
BenGoldberg On the one hand, the example from the doc does do what it says it should.
03:12 mcmillhj joined 03:13 pierre_ left
BenGoldberg On the other hand, I'm suffering from sleepyness :P 03:13
03:17 mcmillhj left, zacts joined 03:18 zacts left 03:20 pierre_ joined
bioduds you can't have more than one named parameter in method? 03:31
multi method insert-item( :$timestamp, :$item, :$value, :$table ) { ... 03:32
$control.insert-item( :timestamp( "478637690765641" ), :item( "Name" ), :value( "Eduardo" ), :table( "Users" ) );
what is wrong here?
Too many positionals passed; expected 1 argument but got 2 is interpreter error
geekosaur that error doesn't look like it goes with that signature 03:34
03:39 cpage_ left
bioduds correct 03:39
it was telling me something else
thanks
03:40 raiph joined
bioduds problem was here my $fh = open "files/e87d72f672a22a.pl", :w; 03:40
dont know why
got why 03:41
directory didn't exist
:D
good
newbie thing
03:42 Girafferson left 03:44 mcmillhj joined 03:46 wamba left 03:49 mcmillhj left 04:00 bjz joined 04:03 DmZDsfZoQv left 04:05 labster joined 04:06 mcmillhj joined 04:11 Cabanossi left, mcmillhj left 04:13 araujo__ joined, khw left 04:14 Cabanossi joined, araujo__ left 04:16 araujo_ left 04:20 bjz left 04:24 bjz joined 04:29 cognominal joined 04:30 zacts joined, bjz left 04:31 bjz joined 04:39 BenGoldberg left 04:44 woolfy left, mcmillhj joined 04:47 cyphase_eviltwin joined 04:48 leont joined
lizmat avuserow_: the @a solution allows you to go back to element 0, so it need to keep the elements around 04:48
04:49 mcmillhj left
lizmat avuserow_: whereas "for |(1..3) xx * { .say }" would just iterate over the values, and not grow in memory usage 04:50
afk&
04:50 lizmat left 04:53 cognominal left 05:02 pierre_ left 05:09 brrt joined 05:18 TEttinger left 05:19 TEttinger joined 05:25 mcmillhj joined 05:29 mcmillhj left 05:39 rindolf joined 05:44 cyphase_eviltwin is now known as cyphase 05:45 woodruffw left 05:46 leont left 05:56 mcmillhj joined 05:57 ItayAlmog joined 05:58 zacts left 06:00 bjz left, mcmillhj left 06:02 brrt left, brrt joined
brrt would like to wish the attendees of YAPC::EU a lot of fun 06:04
and i'd be very, very, very happy if any of the recordings were put live 06:05
or online, at least
06:06 canopus left, bjz joined 06:12 canopus joined 06:14 nadim joined
nadim morning 06:14
masak: not in Cluj? 06:15
06:15 danaj joined 06:19 brrt left 06:21 zacts joined 06:23 mcmillhj joined 06:26 danaj left 06:27 brrt joined 06:28 mcmillhj left 06:36 CIAvash joined
El_Che www.youtube.com/watch?v=A3ZSt5QKEAg <--- yapce live streaming! 06:37
brrt aw yeah
El_Che++
06:38 chienjo joined 06:39 firstdayonthejob left 06:40 chienjo left
El_Che you can see liz's head! 06:40
06:43 danaj joined 06:44 mcmillhj joined
dalek ateverable: 4997423 | (Aleks-Daniel Jakimenko-Aleksejev)++ | build.p6:
build.p6 is executable

Obviously.
06:46
06:46 dalek left 06:47 bjz left, dalek joined, ChanServ sets mode: +v dalek
AlexDaniel dalek: we don't get along very well, right? 06:47
06:48 labster left 06:49 danaj left 06:50 mcmillhj left 06:51 nadim left 06:54 dj_goku left, dj_goku joined 06:56 darutoko joined, nadim joined 06:57 mcmillhj joined 06:58 brrt left 07:01 mcmillhj left 07:02 danaj joined 07:07 labster joined 07:10 domidumont joined, lizmat joined 07:11 woodruffw joined, woodruffw left, woodruffw joined, woodruffw left 07:12 woodruffw joined, woodruffw left, lizmat left, woodruffw joined, woodruffw left, lizmat joined 07:13 woodruffw joined, lizmat left 07:14 domidumont left, domidumont joined
dalek ateverable: 67ba201 | (Aleks-Daniel Jakimenko-Aleksejev)++ | README.md:
Update README

It is really hard to keep README up to date. Let's see if it becomes easier with the wiki.
07:22
07:23 zakharyas joined 07:27 mcmillhj joined 07:29 AlexDaniel left 07:31 leont joined 07:32 mcmillhj left 07:38 RabidGravy joined
masak morning, #perl6 07:39
nadim: no, I'm at Bond-con this year :/
let me second brrt and wish everyone at YAP::Europe a wonderful conference 07:40
ooh, a live stream. www.youtube.com/watch?v=A3ZSt5QKEAg -- El_Che++ 07:41
masak stops procrastinating and works on his talk
hehe, watching the live stream while tinkering with slides feels like an approximation of being at YAPC::Europe, sitting in the back room huddled over the laptop in controlled semi-panic 07:43
07:49 cognominal joined, danaj left 07:50 cpage_ joined, leont left, ItayAlmog left 07:51 leont joined 08:05 danaj joined
Xliff m: "#708090".substr(1).comb(2).say 08:09
camelia rakudo-moar 998e2b: OUTPUT«(70 80 90)␤»
08:09 petercommand joined 08:10 pierre_ joined
Xliff m: hex("10") 08:10
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ hex used at line 1␤␤»
08:12 cognominal left
Xliff m: '0x70'.fmt('Decimal %d').say 08:14
camelia rakudo-moar 998e2b: OUTPUT«Decimal 112␤»
Xliff m: '0x70'.fmt('%d').say
camelia rakudo-moar 998e2b: OUTPUT«112␤»
Xliff m: '0x10'.fmt('%d').say
camelia rakudo-moar 998e2b: OUTPUT«16␤»
Xliff m: '10'.fmt('%d').say
camelia rakudo-moar 998e2b: OUTPUT«10␤»
Xliff m: "#708090".substr(1).comb(2).map({ $_ = "0x$_".fmt($d) }).say 08:15
camelia rakudo-moar 998e2b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$d' is not declared␤at <tmp>:1␤------> 3substr(1).comb(2).map({ $_ = "0x$_".fmt(7⏏5$d) }).say␤»
Xliff m: "#708090".substr(1).comb(2).map({ $_ = "0x$_".fmt('%d') }).say
camelia rakudo-moar 998e2b: OUTPUT«Cannot assign to an immutable value␤ in block <unit> at <tmp> line 1␤␤»
Xliff m: "#708090".substr(1).comb(2).map({ "0x$_".fmt('%d') }).say
camelia rakudo-moar 998e2b: OUTPUT«(112 128 144)␤»
Xliff \o/ 08:16
08:16 lizmat joined 08:19 rba_ joined 08:20 TEttinger left 08:24 TEttinger joined
TimToady m: "#708090".substr(1).comb(2).map({ :16($_) }).say 08:25
camelia rakudo-moar 998e2b: OUTPUT«(112 128 144)␤»
08:25 bjz joined
TimToady m: :16("#708090".substr(1)).polymod(256 xx *).reverse.say 08:27
camelia rakudo-moar 998e2b: OUTPUT«(112 128 144)␤»
TimToady m: "#708090".comb(/\w\w/).map({ :16($_) }).say 08:28
camelia rakudo-moar 998e2b: OUTPUT«(112 128 144)␤»
lizmat is the backlog: irclog.perlgeek.de/perl6/today just not working for me, or is there a more general issue ? 08:29
TimToady working for me
moritz lizmat: how is it not working for you? 08:30
08:30 noganex joined
lizmat moritz: like not at all 08:30
moritz lizmat: what does that mean?
lizmat: timeout? any HTTP error code? empty page?
lizmat well assuming TimToady is on the same Wifi as I am, I guess the problem is mine 08:31
moritz: no timeout, but no page either
08:31 noganex_ left
moritz lizmat: does irclog.perlgeek.de/perl6/2016-08-24 work? 08:31
and you can also try the https:// URL
lizmat I fear it's a Wifi proxy malfunction or so 08:32
El_Che wifi proxy brr
lizmat: tunnel your webtraffic through ssh?
moritz try HTTPS, it can't proxy it so easily
TimToady is on the speaker wifi, which did freeze up about 10 minutes ago, unless it was my computer, but reattaching fixed it 08:33
lizmat tries that 08:34
El_Che the speaker on the livestream also seems to be having network problems 08:35
and it looks like he counted on it
08:35 lizmat left 08:36 rba_ left
dalek c: 3990324 | moritz++ | doc/Language/ (2 files):
Use HTTPS URLs to irclog.perlgeek.de

because we can. letsencrypt++
08:36
DrForr letsencrypt++ # using it for .. anupcoming project :) 08:38
08:40 lizmat joined
El_Che lizmat: I sent you a msg in case it didn't work 08:41
moritz I quite like that fact that there are quite some letsencrypt clients to chose from
DrForr I'm ssh'd into my home server via the speake wifi.
moritz I tend to use simp_le, which is non-interactive and well suited for cron jobs
masak heh, Markdown has corrupted my ability to type LaTeX 08:42
moritz writing large bodies of text in latex is really painful when you're used to a simpler markup format :-) 08:43
08:46 kurahaupo joined 08:47 lizmat_ joined, labster left 08:48 danaj left 08:49 lizmat left 08:51 g4 joined, lizmat_ left 08:54 lizmat joined 08:58 labster joined
lizmat El_Che: thanks for the tip, now using proxy 08:59
El_Che good to hear
09:01 domidumont left, jonas1 joined 09:04 zakharyas1 joined, zakharyas left 09:05 bjz left 09:10 bjz joined 09:11 domidumont joined
konobi moritz: isn't there simon's typeset stuff? 09:15
moritz konobi: there's lots of typset stuff out there, but I'm not familiar with simon's, specifically 09:19
09:22 leont left, smls joined 09:24 danaj joined, kaare_ joined
konobi moritz: sile 09:28
09:29 kurahaupo left
moritz so far I'm just writing my stuff in markdown, and when the time comes that I'll have to worry about formatting, I'll throw in some pandoc and latex templates, or something 09:33
El_Che newsflash from the yapce livestream: booking is looking for developers :) 09:39
09:39 zakharyas1 left
kaare_ El_Che: That must be a first! 09:42
09:42 mvorg joined 09:46 CIAvash left 09:48 CIAvash joined 09:55 danaj left 09:57 nadim left 09:59 melezhik joined
melezhik Hi all! 09:59
I look if perl6/panda/zef has possibility to install a "share" files so that I could use them in my code , in way of File::ShareDir 10:00
something like proposed here - perltricks.com/article/66/2014/2/7/...tribution/ 10:01
any ideas? 10:02
10:08 araujo joined, araujo left, araujo joined, pierre_ left, araujo left, TEttinger left 10:13 labster left 10:15 araujo joined 10:16 lizmat left, TheLemonMan joined 10:31 edehont joined, zakharyas joined 10:32 leont joined 10:38 grondilu joined 10:41 canopus left, leont left
moritz melezhik: I'm pretty sure some of the modules do that already 10:42
melezhik: iirc you have to specify them in the meta file
jnthn You use %?RESOURCES to get at them iirc 10:43
moritz melezhik: example: github.com/awwaiid/p6-Inline-Ruby/...A.info#L14 and github.com/awwaiid/p6-Inline-Ruby/...by.pm6#L33 10:44
10:45 nadim joined 10:46 canopus joined
melezhik mortiz: thanks a lot will take a look ... 10:48
10:49 edehont left 10:51 zakharyas left 10:54 lizmat joined 10:56 zakharyas joined 10:57 canopus left, leont joined 11:03 bioduds left, bioduds joined 11:04 canopus joined 11:06 kurahaupo joined 11:09 cognominal joined 11:15 telex left, telex joined
melezhik mortiz: hm, looks like I succeeded in installing resources via META.info , but I can't get them in my code, %?RESOURCES looks obscure for me , where can I get a perl6doc on %?RESOURCES ? 11:24
ChoHag moar dumps core on openbsd when using zef or panda. 11:25
I guess since it didn't last year and I've not been able to use perl6 this year, I must be its only openbsd user. 11:26
11:32 cognominal left
lizmat melezhik: nine might know how much of %?RESOURCES is implemented 11:32
moritz melezhik: pro tip: if you want to hilight me, try spelling my name right :-) Most IRC clients offer tab completion for nick names 11:35
11:35 pierre_ joined
huf irc clients should support hilighting by similarity :) 11:36
maurice, moric, mr ortiz, etz
moritz melezhik: docs.perl6.org/language/modules has some docs
huf: well, irssi does support hilighting by regex 11:37
but I don't care enough right now to actually use it
11:39 rba_ joined, johnjohn101 left
melezhik mortiz: will take a look, thanks 11:39
11:39 pierre_ left
moritz
.oO( the appropriate German word here is "beratungsresistent" )
11:41
melezhik ahh, this is probably what I did wrong - "The resources section is optional, but, if present, should contain a list of the files in your resources directory"
I had a directory names for resources arrays 11:42
but I had to a file names
)))
11:42 rba_ left 11:43 rba_ joined 11:44 rba_ left
El_Che watching SawyerX's talk on XS. I must say I prefer NativeCall :) 11:46
huf shocking
i dont think even its mother can love XS :)
El_Che Well, the X makes it sound cool 11:47
11:47 rba_ joined
tadzik Extra Swag! 11:51
melezhik propbably this is something I do wrong: 11:54
11:54 pierre_ joined
melezhik melezhik@melezhik-pc:~/projects/sparrowdo-nginx$ cat resources/foo.txt OK 11:54
"resources" : [ "foo.txt" ],
pand install works fine
but ... 11:55
leont has gotten a little too comfortable with XS for his own good
11:55 smls left, smls joined
melezhik perl6 -MSparrowdo::Nginx -e 'say %?RESOURCES<foo.txt>;' ==> Nil 11:55
leont It's a camel, it's ugly but it will get you there
moritz melezhik: you might need to use %?RESOURCES inside the package that you've installed 11:56
melezhik moritz - will try, thanks 11:57
just line "use %?RESOURCES;" ?
it's not compiled ... ((( 11:58
11:58 lizmat left, edehont joined 11:59 pierre_ left
melezhik ok, looks like "say %?RESOURCES<foo.txt>.Str;" 12:00
in my module code make it resource initialized ...
kind lazy initialzation?
abit tricky ...
ahh, it is only accessible in my module scope 12:01
it is not lazy initilaztion ...
12:03 edehont left 12:07 kjs_ joined
nine melezhik: %?RESOURCES is for modules. It also assumes that the directory you are working in looks like lib/Foo.pm resources/foo.txt 12:12
melezhik: so in Foo.pm you can access foo.txt by %?RESOURCES<foo.txt> 12:13
melezhik yeah, that is it 12:14
now I know
I assumed that I can access a resource outside of module, but this is not true. anyway it is ok for me as I intended to use resources in modules 12:15
nine It's for resources that are bundled with modules
12:15 skids left
bioduds I am astonished with subsets 12:16
12:16 iH2O joined
nine bioduds: they are awesome :) 12:16
melezhik nine, got it, it is ok 12:17
tbrowder [Coke]: I do see the "whitespace" problem but it's a false positive: line 1580, doc/Language/5to6-nutshell.pod6 in the comment line for vim. I didn't mod that file on my last merge so I didn't pick up on it in my xtest. Looks like the whitespace test needs a tweak, but I leave that to doc decision makers as to how to fix it. 12:21
bioduds yep nine 12:22
they reminded me of objective-c categories which I found very cool 12:23
iH2O isnt objective C as obsolete as smalltak?
bioduds now, if anyone could help me, I'd like a subset that avoids spaces
tbrowder [Coke]: I meant the non-breaking whitespace test needs a tweak. 12:24
bioduds something like subset NoSpaces of Str where !/\S/
12:25 melezhik left
jnthn where /^\S*$/ would be one way to do it 12:26
moritz might need to be subset NoSpace of Str where { ! /\S/ }
or does "where" autothunk?
12:27 iH2O left
jnthn Yes 12:27
m: subset NoSapce of Str where !/\s/; my NoSpace $str = 'ok';
camelia rakudo-moar 2153bf: OUTPUT«5===SORRY!5===␤Type 'NoSpace' is not declared. Did you mean 'NoSapce'?␤at <tmp>:1␤------> 3t NoSapce of Str where !/\s/; my NoSpace7⏏5 $str = 'ok';␤Malformed my␤at <tmp>:1␤------> 3subset NoSapce of Str where !/\s/; my7⏏5 NoSpace…»
jnthn m: subset NoSpace of Str where !/\s/; my NoSpace $str = 'ok'; 12:28
camelia ( no output )
jnthn m: subset NoSpace of Str where !/\s/; my NoSpace $str = 'o k';
camelia rakudo-moar 2153bf: OUTPUT«Type check failed in assignment to $str; expected NoSpace but got Str ("o k")␤ in block <unit> at <tmp> line 1␤␤»
bioduds thanks jnthn
12:28 n1lp7r joined 12:31 rkazak joined, domidumont left, domidumont joined 12:35 rkazak left
[Coke] tbrowder: no, it didn't need a tweak. I fixed it? 12:37
I'm not sure why you think the test was over-eager. 12:38
[Coke] digs through some git history...
Or do you mean there's a -current- failure? 12:40
no, no current failure...
12:40 wamba joined
[Coke] the change in github.com/perl6/doc/commit/2ff9fb...3beb2127e1 isn't in a comment. So, I'm confused. 12:41
timotimo o/ 12:43
12:45 kjs_ left 12:49 melezhik_ joined 12:50 pmurias joined
pmurias masak: when will bond conf be streamed? 12:52
timotimo the screen they're using for slides is ... pretty terrible 12:53
12:53 espadrine joined, melezhik_ left
bioduds subset NoSpace of Str where !/\s/; 12:55
works fine
timotimo oh? 12:56
bioduds exactly what I needed! declaratively
im shocked. 4th gen is here
that's why it took 15 years :)
timotimo m: subset NoSpace of Str where !/\s/; my NoSpace $a = "hey"; $a = "hey "; 12:57
camelia rakudo-moar 2153bf: OUTPUT«Type check failed in assignment to $a; expected NoSpace but got Str ("hey ")␤ in block <unit> at <tmp> line 1␤␤»
timotimo hm, ok
bioduds exactly
timotimo perlsec person says he hasn't looked at perl6 at all yet; maybe he will at some point. that'd be pretty interesting 12:58
what are the beep beep noises for? :\
12:59 zakharyas left 13:00 mcmillhj joined
pmurias can I create a NQP level list from Perl 6? 13:03
jnthn nqp::list(...)
Depending on exactly what you want to do 13:04
also class MySimpleListThingy is repr('VMArray') { } gives you a Perl 6 type with the low-level list REPR
13:10 g4 left
pmurias hmm, if I return nqp::list from a method I can't pass it to NQP land 13:14
I get a "This type (List) does not support elems" 13:15
timotimo it'll get hllized
you need to be careful about how you invoke the method
if you don't use nqp:: ops to find and invoke it, it'll probably try to be "helpful" 13:16
bioduds would that be a regex to express identifiers in perl6?
13:16 leont left
bioduds must start with an alphabetic character (or an underscore), followed by zero or more word characters (alphabetic, underscore or number) 13:17
TheLemonMan the new harness for custom exception handlers is so much useful! ptpb.pw/6HgS
timotimo bioduds: you can use <ident> from your own regexes
bioduds can i use it to set a subset? 13:18
something like: subset StrIdent of Str where <ident> ?
im metaprogramming and some params are becoming var names 13:19
therefore a subset that allows only identifiers would be perfect
pmurias timotimo: what's doing the hllization of the list? 13:20
13:21 cdg joined 13:22 ptolemarch joined, cdg left, cdg joined
timotimo rakudo's codegen inserts a nqp::hllize 13:22
13:23 Sgeo left
[Coke] I cannot tell you how broken ptpb.pw/ inside $dayjob. 13:24
bioduds timotimo, how do I use <ident> ?
*.ident ?
CIAvash bioduds: where /^<.ident>$/
bioduds man, that is freaking awesome 13:25
13:25 nadim left
[Coke] finds a header that makes it look like stackoverflow.com/questions/319504...ttp-header is responsible. 13:25
bioduds I am enjoying P6 so much
13:25 nadim joined 13:27 kjs_ joined
jnthn TheLemonMan: Hahaha...that's great :D 13:27
13:28 leont joined
timotimo very good! 13:29
13:31 zakharyas joined 13:32 jcallen joined, sufrostico joined
hahainternet m: use GTK::Simple; 13:35
camelia rakudo-moar 2153bf: OUTPUT«===SORRY!===␤Could not find GTK::Simple at line 1 in:␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-2/share/perl6/site␤ /home/camelia/rakudo-m-inst-2/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-2/share/perl6␤ CompUnit::R…»
hahainternet aww
will do it locally then
(profiling startup as it seems to take 30s)
13:36 mohae_ joined
timotimo that'd be nice 13:36
13:36 andreoss joined
timotimo i was annoyed by how slow it is, but i didn't want to spend too much time on investigating just yet 13:37
oh crap! the APW is just about to happen! and i'm not actually free to attend it at that time! :o 13:38
13:38 skids joined 13:39 mohae left 13:40 raiph left 13:42 dsp_ joined, leont left, kjs_ left, lizmat joined
dsp_ hi. just to check, is it `normal' for, say, GTK::Simple to take an extremely long time to execute? example: 13:43
gist.githubusercontent.com/anonymo...%2520speed
technoanimal.net/profile-1472045959.63195.html
(i was just experimenting, and was surprised it took so long. wasn't sure if it was my fault or expected at this stage.) 13:44
hahainternet Time Spent
The profiled code ran for 101.65ms
so yeah something wacky's going on there
dsp_ moar is pegged at 100% cpu before it seems to do anything
tried using moar and moar-blead built using rakudobrew 13:45
jnthn Modules are loaded at compile time, and the profile measures runtime, so if it's in module loading then the profile could still be correct, just not showing the actual problem
--profile-compile might give a more informative output
timotimo --stagestats will give you a breakdown of compile time, but i don't think it descends into compiling modules during loading (if it compiles anything at all) 13:46
hahainternet please re-post the uploaded html too dsp_ cause i wanna look :) 13:48
dsp_ yes, i am executing two more runs, one with --profile-compile and one with --stagestats (did not know if they could be combined)
timotimo they can. it's just a tiny bit of extra printing 13:49
not *that* informative
dsp_ % time perl6 --profile-compile gtk.pl
Writing profiler output to profile-1472046521.54126.html
perl6 --profile-compile gtk.pl 78.64s user 0.55s system 99% cpu 1:19.21 total
i will upload now.
timotimo m: say <foo bar baz quux>.fmt("?", ",") 13:50
camelia rakudo-moar 2153bf: OUTPUT«Your printf-style directives specify 0 arguments, but 1 argument was supplied␤␤»
timotimo :( 13:51
can we have a directive "always print the empty string"? :)
13:52 VnrycepuxO joined
smls Is it possible to make EVAL interpret the given source code in expression context, rather than statement-list context? 13:52
jnthn '(' ~ $source ~ ')' # ;-) 13:53
smls ah of course
dsp_ technoanimal.net/profile-1472046521.54126.html -- gist.githubusercontent.com/anonymo...tfile1.txt
smls thanks
jnthn Mild hack but :)
smls using EVAL in the first place is already a hack, so thats ok 13:54
timotimo lizmat: i won't actually be able to attend APW, because i've got to be somewhere else during it ;(
nine :(
lizmat :-(
RabidGravy I think I may have been having a bad day in the office when I wrote this github.com/cosimo/perl6-cache-memc...-bug.t#L34 13:55
timotimo that's not perl6 code :P 13:56
dsp_: the profile result may be too big for the browser-based profiler; you can --profile-filename=foobar.json to get a pure json thing, and then we can feed it into the qt profile viewer thingie 13:57
dsp_ ok, i can do that, one moment.
timotimo unless the json file is bigger than the arbitrary limit the json parser library we use enforces m( 13:58
github.com/tadzik/p6profiler-qt - this is the qt profile viewer thing
RabidGravy timotimo, I know, but because of the bogus skip above it just never got run 13:59
timotimo %)
14:00 canopus left 14:02 zacts left
Woodi "...just small quirk. But if it get logo and web page and some people goes mad, then you will fix this ?" :)) #Cluj++ 14:03
14:05 canopus joined 14:06 kjs_ joined 14:11 lizmat left, Skarsnik joined
dsp_ technoanimal.net/gtk.json sorry for the delay. 14:11
timotimo that's only one second of recorded time 14:13
did you accidentally --profile instead of --profile-compile?
dsp_ ah, yes, doh. 14:14
multitasking with work and sick :/ let me re-up
14:15 harmil joined 14:17 leont joined
harmil If I have an array @a and a potentially shorter array @b is the best way to check that @a starts with @b in a test to, "is-deeply @a[^+@b], @b, 'a starts with b'"? 14:17
Woodi timotimo: is there some way to view this .json nicelly ?
timotimo yes, look at the github link from 18 minutes ago 14:18
dsp_ 9.2mb, uncompressed: technoanimal.net/gtk.json.gz
14:18 kjs_ left
timotimo i'm just now recording my own, too 14:19
huh. there seem to be ~1600 different EVALed code pieces 14:21
hahainternet well there's your problem!
14:21 kjs_ joined
timotimo not necessarily 14:22
hahainternet tell us oh profiler, where do we begin the witch hunt?
timotimo each one of those only runs for like 0.1ms
hahainternet timotimo: it was just a crap top gear reference :)
timotimo oh, ok
though to be fair, the method EVAL itself eats up about 30% of the whole run time
on that note ... does someone want to improve the p6profiler-qt? it's missing a bunch of stuff :) 14:23
nadim Hi, this is a request to the moar dev team. I installed p6 on a brand new box and It sefault when trying to run zef. a stack trace here nopaste.linux-dev.org/?1119781 14:26
timotimo nadim: cool. can you give us the --version of perl6 and moar?
nadim this problem is a mix of intel cpu problem, glibc using it, microcode that seems to not fix it
timotimo: a sec ;) 14:27
timotimo what? %)
nadim OK, I get you that and I'll continue the story after
14:28 khw joined, cognominal joined
nadim This is MoarVM version 2016.07-24-g31eccd7 built with JIT support 14:28
timotimo hahainternet, dsp_, you could try seeing what happens if you time only from-json from the core setting.
it *could* be that it takes a big chunk of the time it takes to start up GTK::Simple. 14:29
14:29 AlexDaniel joined, kjs_ left
nadim timotimo: This is Rakudo version 2016.07.1-243-gc201a76 built on MoarVM version 2016.07-24-g31eccd7 14:30
14:30 lizmat joined
nadim I have update microcode, and even tried to rebuild the glibc package with enable-lock-elision=no, but the packaging system is broken for some, still, obscure reason 14:32
timotimo: I don't know if it is possible to use something else apart uv_mutex_unlock, or if it is because of trying to unlock a lock that is not locked 14:33
timotimo time to spin up the debugger, eh?
nadim timotimo: there's plenty error reported about this for other applications
timotimo it should be somewhat easy to see exactly if the same address is being locked that's being unlocked there
nadim timotimo: that would be great because Zef seems to use that code and that means that i can't install modules
14:34 kjs_ joined
timotimo i don't think you can run any perl6 code on rakudo without triggering multi_cache_add 14:34
nadim p6 seems to work fine otherwise, my module runs through its tests and so does p6
timotimo ...wtf
TimToady harmil: you can use smartmatching for that 14:36
14:36 notbenh left
TimToady m: say <a b c d> ~~ |<a b c>, * 14:36
camelia rakudo-moar 2153bf: OUTPUT«False*␤»
TimToady m: say <a b c d> ~~ (|<a b c>, *)
camelia rakudo-moar 2153bf: OUTPUT«True␤»
TimToady like that
timotimo hahainternet, dsp_, did you get my message? 14:37
nadim timotimo: p6 -Ilib bin/zef is the command that breaks (there are probably other)
14:37 iH2O joined
timotimo i'm imagining something like 'my $start = now;' and at the end 'note "json parse took {now - $start}s";' 14:38
timotimo AFK for a bit
smls m: say "a1" ~~ /a <? 1>/
camelia rakudo-moar 2153bf: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at <tmp>:1␤------> 3say "a1" ~~ /a <?7⏏5 1>/␤Unable to parse regex; couldn't find final '/'␤at <tmp>:1␤------> 3say "a1" ~~ /a <?7⏏5 1>/␤␤»
smls Wasn't there some shortcut for <?before > ?
ugexe nadim: try `perl6 -Ilib bin/zef --/cached ...` which will skip the part of zef that calls a lock. If that doesn't work then its probably a lock/unlock in compunit repo 14:39
TimToady m: say <a b c d> ~~ (|<a b c>, **)
camelia rakudo-moar 2153bf: OUTPUT«True␤»
jnthn smls: If it's a char class (which a single char boils down to) then <?[1]> 14:40
TimToady er, use **, not *, which only matches one element
smls jnthn: Ah, maybe that's what I was thinking of
dsp_ sorry, i've been multitasking. let me look into doiung this json thing you talk about.
TimToady smls: more generally, anything that goes inside <> can be turned into a lookahead by using <?x> instead of <x> 14:42
but not a general regex, without 'before' 14:43
smls ok
TimToady good reason to turn it into a rule if you use it more than once, so you can say <?foo> 14:44
hahainternet timotimo: yeah i'm confused, what's 'the core setting'?
TimToady we really should stop calling it the 'core', when it's really the 'skin'... 14:45
14:47 iH2O left
nadim ugexe: --/cached? with a slash? 14:47
harmil TimToady: Thank you 14:48
ugexe nadim: yes, the slash is like -- but false
nadim ugexe: still get a seg fault
ugexe nadim: probably in rakudo then. i pm'd you a longer command that should point out exactly where 14:49
nadim I've beed digging into that the last two days
ugexe: timotimo got the details too
14:50 lizmat left
nadim ugexe: it's either changing microcode update, glibc, or maybe the mutexes that are used in p6 14:50
ugexe there are multiple locks in compunitrepo and precomp code
14:51 lizmat joined 14:52 cognominal left 14:55 lizmat left
nadim timotimo: nopaste.linux-dev.org/?1119782 14:56
14:57 lizmat joined 15:04 wamba left
timotimo hahainternet: it's the piece of code that gives you basically every single class, sub, and operator you'd use in perl6 15:05
tbrowder [Coke]: My bad, I did xtest in a non-current dir. xtest looks good on master just now. Only error is the usual "t/00-load.t ............... 1/1 15:07
# Failed test 'load module Pod::To::BigPage'
# at t/00-load.t line 6
# ===SORRY!===
# Expected MAST::Frame, but didn't get one"
which I assume all are getting (still an issue in Pod::To::BigPage).
hahainternet timotimo: well ultimately i was asking 'what do you want me/dsp to run exactly'? 15:08
dalek c: 6600455 | (Zoffix Znet)++ | doc/Language/testing.pod6:
Fix broken URL
[Coke] tbrowder: no, I'm not getting that error because I don't have the broken optional dependecy installed.
something SSL related.
timotimo hahainternet: run $EDITOR src/core/Rakudo/Internals/JSON.pm
15:09 leont left
timotimo m: say now; say time 15:10
camelia rakudo-moar 2153bf: OUTPUT«Instant:1472051478.944591␤1472051442␤»
timotimo tends to forget which is the one that has the sub-second precision
15:12 cibs left
tbrowder which optional dependency is that? 15:13
15:14 cibs joined
hoelzro o/ #perl6 15:16
timotimo heyo hoelzro 15:17
hoelzro howdy timotimo
timotimo who the hell is parsing all that json 15:18
tbrowder [Coke]: I've tried uninstalling LWP::Simple and Pod::To::BigPage and reinstalling with "zef --force install Pod::To::BigPage" which didn't eliminate the error with xtest. What did you do to eliminate the error?
[Coke]: Never mind, I read the rest of the comments on the issue. Thanks. 15:19
hoelzro this might be a terrible idea - but do we have a way (from a module) to have a module B which is imported by module A at BEGIN time, and B installs an INIT phaser into A's unit? 15:20
timotimo i don't think we do. 15:21
but you can do it with a slang
hoelzro hmm, I hadn't thought of slangs 15:22
15:22 kyclark_ joined
hoelzro the best trick I had up my sleeve was exporting something into A that does...something. 15:22
15:23 acrussell joined
kyclark_ Given a hash like my %h = red => 10, blue => 3, green => 5; how can I sort it by the values? 15:24
jnthn for %h.sort(*.value) { ... } 15:25
(Note that you're actually sorting a list of the pairs in the hash; hashes themselves are unordered)
15:27 kjs_ left
kyclark_ That is so nice! 15:28
timotimo dsp_, hahainternet, i get a total time spent in json parsing of 36.5 seconds, the profiler says the whole program took 70 seconds
tbrowder [Coke]: See the comment I added to the Pod::To::BigPage issue. The problem is solved for me at least for the moment (I need IO::Socket::SSL for another project). 15:31
timotimo that is, a simple "use GTK::Simple" will parse 407 blobs of json and takes 50% of its run time doing that. 15:32
dsp_, hahainternet, want to try plugging in JSON::Fast instead of JSON::Tiny and see how much better it gets? or maybe try caching json text to json result?
kyclark_ I’d like to constrain a “sort-by” argument to “key” or “value,” so I’m thinking about using “enum <key value>” and then somehow checking that the argument is in there. 1) Does that sound best? 2) How can I do that? 15:38
15:39 mcmillhj left
kyclark_ enum SortBy <key value> 15:39
timotimo you can also smart match against any(<key value>)
or against a hash 15:40
moritz or yes, use the enum
timotimo yup
moritz timotimo: or a Set :-)
timotimo right, anything Associative, really
moritz m: enum SortBy <key value>; sub f(SortBy $x) { say $x }; f key
camelia rakudo-moar 76e1ed: OUTPUT«key␤»
moritz m: enum SortBy <key value>; sub f(SortBy $x) { say $x }; f 'key'
camelia rakudo-moar 76e1ed: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Calling f(Str) will never work with declared signature (SortBy $x)␤at <tmp>:1␤------> 3ey value>; sub f(SortBy $x) { say $x }; 7⏏5f 'key'␤»
kyclark_ m: enum SortBy <key value>; say ‘key’ ~~ SortBy
camelia rakudo-moar 76e1ed: OUTPUT«False␤»
timotimo that's more problematic :) 15:41
but let's try this:
m: enum SortBy <key value>; sub f(SortBy() $x) { say $x }; f 'key'
camelia rakudo-moar 76e1ed: OUTPUT«Method 'SortBy' not found for invocant of class 'Str'␤ in sub f at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
timotimo aaw
15:41 mcmillhj joined
dsp_ timotimo: sorry for the lack of replies, i'm still at the office. but, i'm glad to know it wasn't "just me" that had the long execution times. i thought it was a quirk of my setup perhaps. 15:41
timotimo nope, it's not just you :) 15:42
dsp_ when i have some time, i will see if i can hack at it
15:44 leont joined
timotimo it's parsing the exact same json blob a million times 15:44
mspo should get pretty good at it ;)
timotimo except it doesn't :) 15:45
dsp_ timotimo: this JSON::Tiny to JSON::Fast, is it in the compiler you are referring to for the change?
timotimo it's in src/core/Rakudo/Internals/, that's all Perl 6 code 15:46
dsp_ aha
i will have a look, thank you
pmurias can I declare a lexical variable with an arbitray name like $#@?!?
timotimo cool. it's doing 240 json parses, 237 of them could have come straight from the cache.
pmurias: it's possible with a slang, i suppose
dsp_: but putting a cache in there seems like a very bad idea, because it could be used from multiple threads 15:48
dsp_: it'd be better to put the cache into whatever part of the CompUnitRepo stuff uses json parsing
dsp_: gist.github.com/anonymous/d174b167...ebf1b1fb9c here's my diff for rakudo to do these measurements i was talking about 15:49
kyclark_ This script basically does what I want: Sorts by keys/values either asc/desc. I was thinking of using a type to constrain the “sort-by”. It’s not strictly necessary, but I’m trying to show cool examples. Also, any other comments welcome. pastie.org/10939611
dsp_ thank you 15:50
timotimo YW :)
kyclark_: i'd personally get rid of both for loops :) 15:52
did you know about .Bag?
kyclark_ Yes, sorry, I should explain my MO. I start with very simple, imperative examples and then build up. www.gitbook.com/book/kyclark/metag...cs/details
timotimo m: <a b c a a a b b c>.Bag.say
camelia rakudo-moar 76e1ed: OUTPUT«bag(a(4), c(2), b(3))␤»
kyclark_ This is for teaching beginngers (grads/undergrads) programming.
timotimo $file.IO.lines.Bag would do the same thing your first for loop does 15:53
OK
in that case, maybe keep the for loop
kyclark_ I’m up to 5 versions of this script, will probably hit 10. :-)
timotimo your current program would allow $sort-by to be 'age' or 'taste' as well :) 15:54
anyway, BBIAB :)
kyclark_ Right, I want to find a cool way to keep $sort-by to “key” or “value" 15:57
Preferable in the type/MAIN sig 15:58
15:58 zakharyas left
kyclark_ Maybe a “subset”? 15:58
timotimo subset is fine
15:58 smls left
kyclark_ This seems to work: 16:04
subset SortBy of Str where * ~~ /^keys|values$/;
Is that the most elegant?
16:06 mcmillhj left 16:07 mcmillhj joined
kyclark_ What am I doing wrong here? 16:07
m: my $ok = <red green>.Bag; say ‘red’ ~~ $ok;
camelia rakudo-moar 76e1ed: OUTPUT«False␤»
kyclark_ How do I check for membership in a bag? 16:08
16:08 rba_ left
kyclark_ I see I can do $ok<red> — any other way? 16:08
grondilu m: subset SortBy of Str where "keys"|"values"; say "keys" ~~ SortBy
lizmat m: my $ok = <red green>.Bag; say $ok<red>:exists
camelia rakudo-moar 76e1ed: OUTPUT«True␤»
kyclark_ Bag or Set, actually. Either will do.
hoelzro kyclark_: (elem) would do it too, I think
or ∈, if you're feeling fancy 16:09
kyclark_ Yes, (elem)!
16:11 lizmat left 16:13 leont left 16:15 imcsk8 left
kyclark_ What am I missing here? I want to see if I was provided either “key” or “keys”. 16:16
m: my $sort-by = 'keys'; say $sort-by ~~ 'key'
camelia rakudo-moar 76e1ed: OUTPUT«False␤»
kyclark_ Oh, sorry, needed // 16:17
geekosaur m: my $sb = 'keys'; say so 'key'.ACCEPTS($sb)
camelia rakudo-moar 76e1ed: OUTPUT«False␤»
geekosaur ^ is what that actually means; when written that way it's more obvious it's not going to work...
16:18 mohae joined
timotimo well, you might also want to allow Key and Keys, too. as well as KEY and KEYS? 16:18
16:20 mohae_ left 16:21 imcsk8 joined
kyclark_ Given a list of lists e.g.: 16:25
((mouse 1) (cat 3) (bird 1) (dog 2) (frog 5) (cat 2) (mouse 7))
How can I sum those up on the first part? Turn then into a BagHash?
16:25 mcmillhj left
kyclark_ So mouse => 8, cat => 5, ... 16:25
hoelzro you could use classify 16:26
and then sum or...sumthing
(•_•) / ( •_•)>⌐■-■ / (⌐■_■)
timotimo Bag.from-pairs? 16:28
gregf_ or reduce
timotimo in that case it'd probably have to be something like: 16:29
16:30 domidumont left
timotimo m: my @pieces = ("mouse", 1), ("cat", 3), ("bird", 1), ("dog", 2), ("frog", 5); my $bag = Bag.new; $bag{@pieces>>.[0]} = @pieces>>.[1]; say $bag.perl 16:30
camelia rakudo-moar 76e1ed: OUTPUT«Cannot modify an immutable Int␤ in block <unit> at <tmp> line 1␤␤»
16:30 nadim left
timotimo oh? 16:30
oh, yeah 16:31
m: my @pieces = ("mouse", 1), ("cat", 3), ("bird", 1), ("dog", 2), ("frog", 5); my $bag = BagHash.new; $bag{@pieces>>.[0]} = @pieces>>.[1]; say $bag.perl
camelia rakudo-moar 33be22: OUTPUT«("mouse"=>1,"frog"=>5,"cat"=>3,"bird"=>1,"dog"=>2).BagHash␤»
timotimo Bag is immutable, BagHash is the mutable variant
awwaiid cool, but you missed the 'sum' bit 16:32
kyclark_ had like mouse and cat listed twice
timotimo oh 16:34
that'd just be a += instead of = in there
awwaiid madness
timotimo yes, that's me 16:35
awwaiid m: my @pieces = <mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>; my %sums; for @pieces -> ($k, $v) { %sums{$k} += $v } ; say %sums 16:37
camelia rakudo-moar 33be22: OUTPUT«{bird => 1, cat => 5, dog => 2, frog => 5, mouse => 8}␤»
timotimo ah, that's a bit prettier than mine
thanks to the magic of val and all the right coercions being done for yo
16:38 lizmat joined
awwaiid kyclark_: the trickiest bit of this loop is the -> ($k, $v); the parenthesis de-structure the pair. If you left them out you'd get separate elements from @pieces. Otherwise it is just: loop over them all and sum them into a hash 16:38
16:40 mcmillhj joined
timotimo i think you may have to explain "separate elements" a bit more 16:41
because you'd still get the pairs as little lists in each run through the loop 16:42
16:47 canopus left 16:53 canopus joined 16:56 mcmillhj left, faubi left
gregf_ if you can translate this ruby code to perl6: [%w|mouse 1|, %w|cat 3|, %w|bird 1|, %w|dog 2|, %w|frog 5|, %w|cat 2|, %w|mouse 7|].reduce(Hash.new(0)){ |h,a| h[a[0]] += a[1].to_i; h } 16:58
timotimo what changes are allowed when translating? 16:59
m: sub infix:<INTO>(%h, ($k, $v)) { %h{$k} += $v; %h }; say [INTO] BagHash.new(), (<mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>); 17:01
camelia rakudo-moar 33be22: OUTPUT«Too many positionals passed; expected 2 arguments but got 7 in sub-signature␤ in sub infix:<INTO> at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
timotimo m: sub infix:<INTO>(%h, ($k, $v)) { %h{$k} += $v; %h }; say [INTO] BagHash.new(), |(<mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>) 17:02
camelia rakudo-moar 33be22: OUTPUT«BagHash.new(mouse(8), frog(5), cat(5), bird, dog(2))␤»
timotimo m: sub infix:<INTO>(%h, ($k, $v)) { %h{$k} += $v; %h }; .say for [\INTO] BagHash.new(), |(<mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>)
camelia rakudo-moar 33be22: OUTPUT«BagHash.new()␤BagHash.new(mouse)␤BagHash.new(mouse, cat(3))␤BagHash.new(mouse, cat(3), bird)␤BagHash.new(mouse, cat(3), bird, dog(2))␤BagHash.new(mouse, frog(5), cat(3), bird, dog(2))␤BagHash.new(mouse, frog(5), cat(5), bird, dog(2))␤BagHash.…»
vcv m: my @pieces = ("mouse", 1), ("cat", 3), ("bird", 1), ("dog", 2), ("frog", 5); say @pieces.categorize(*[0]).map({ .key => .value.map(*[1]).sum })
camelia rakudo-moar 33be22: OUTPUT«(mouse => 1 frog => 5 cat => 3 bird => 1 dog => 2)␤»
vcv m: my @pieces = ("mouse", 1), ("cat", 3), ("bird", 1), ("dog", 2), ("frog", 5); say @pieces.categorize(*[0]).map({ .key => .value.map(*[1]).sum }).Hash
camelia rakudo-moar 33be22: OUTPUT«{bird => 1, cat => 3, dog => 2, frog => 5, mouse => 1}␤»
timotimo that's not using reduce :)
gregf_: how do you like my version with the triangle reduce added to it? :) 17:03
vcv m: my @pieces = <mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>; say @pieces.categorize(*[0]).map({ .key => .value.map(*[1]).sum }).Hash
camelia rakudo-moar 33be22: OUTPUT«{bird => 1, cat => 5, dog => 2, frog => 5, mouse => 8}␤»
skids m: my %h; %h.append: <<mouse 1 cat 3 bird 1 dog 2 frog 5 cat 2 mouse 7>>; %h = %h.kv.map: { $^k => [+] $^v }; %h.say 17:08
camelia rakudo-moar 33be22: OUTPUT«{bird => 1, cat => 5, dog => 2, frog => 5, mouse => 8}␤»
gregf_ wow, thats neat ;) 17:09
17:10 canopus left 17:14 faubi joined 17:15 canopus joined, edehont joined
skids m: BagHash.^can("append")>>.signature.say # Hrm... 17:17
camelia rakudo-moar a4cc1c: OUTPUT«(($: | is raw))␤»
17:18 firstdayonthejob joined
skids m: my %h := BagHash.new(); %h.append("a",4); %h.say 17:19
camelia rakudo-moar a4cc1c: OUTPUT«Cannot resolve caller append(BagHash: Str, Int); none of these signatures match:␤ (Any:U \SELF: |values is raw)␤ in block <unit> at <tmp> line 1␤␤»
awwaiid m: my %h; %h.append: <<mouse 1 cat 3 bird 1 dog 2 frog 5 cat 2 mouse 7>> ; say %h # interesting!
camelia rakudo-moar a4cc1c: OUTPUT«{bird => 1, cat => [3 2], dog => 2, frog => 5, mouse => [1 7]}␤»
17:19 mcmillhj joined 17:22 edehont left 17:25 Actualeyes left 17:31 setty1 joined, kjs_ joined
b2gills m: #`( pmurias: how about this ) my \term:<$#@?!?> = $ = 41; say $#@?!?++; say $#@?!? 17:37
camelia rakudo-moar a4cc1c: OUTPUT«41␤42␤»
17:38 Actualeyes joined 17:48 cognominal joined, kjs_ left 17:52 andreoss left, andreoss joined
timotimo SourceBaby: BagHash append 17:53
s: BagHash, "append", \(Pair)
SourceBaby timotimo, Sauce is at github.com/rakudo/rakudo/blob/a4cc...ny.pm#L186
andreoss is gather/take thread safe?
timotimo andreoss: you can't gather/take across thread boundaries
17:54 kjs_ joined
timotimo hmm 17:54
i wonder, though.
well, you can't force a Seq that's backed by a gather/take to generate a new value from two threads at the same time without expecting some trouble ... i think
s: BagHash, "append", \(BagHash:D: Pair) 17:55
SourceBaby timotimo, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Confused␤at -e:6␤------> ourcery( BagHash, "append", \(BagHash:D:⏏ Pair) )[1];␤ expecting any of:␤ colon pair␤
timotimo s: BagHash, "append", \(BagHash:D, Pair) 17:56
SourceBaby timotimo, Sauce is at github.com/rakudo/rakudo/blob/a4cc...ny.pm#L186
17:56 sufrostico left
timotimo now you're just fucking with me :( 17:56
17:56 acrussell left
timotimo i wonder if zoffix would know how to do this right? 17:58
18:03 kjs_ left
dalek ecs: b14828b | (Zoffix Znet)++ | v6d.pod:
Forbid Bare C<\b> in Regexes

Implementation to close RT#128986
18:03
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128986
18:05 mvorg left
RabidGravy gah, starting yet another module :( I blame domm and davorg entirely for this 18:07
though to be fair I have spent three days trolling right wingers on twitter when I could have been finishing some software :-\ 18:08
18:08 kjs_ joined 18:09 itaipu joined 18:10 zacts joined
timotimo sometimes you just need to engage in political discourse 18:11
18:12 cognominal left
timotimo do i want to read the oauth2 spec to figure out how the thing works? 18:13
mspo no unless you want to get sued for patent infringement 18:18
timotimo wat? 18:19
mspo oauth is encumbered multiple ways 18:21
timotimo software patents ... 18:22
jnthn It'll only lead to disappointment when you end up having to integrate with someone's home-grown oauth impl and discover they only half read the spec :P
mspo therealdaily.com/corporate/guyzar-...t-lawsuit/
and of course the literal patent (not the one in that lawsuit) www.google.com/patents/WO2013049461A2?cl=en
etc
timotimo cool. 18:23
mspo but go for it :) 18:24
18:25 n1lp7r left
timotimo oracle has the oauth2 patent? 18:25
mspo it's a weird world
the one from the lawsuit is ridiculous
if you read it
RabidGravy timotimo, strange you talk about OAuth2 - is this for anything specific?
timotimo in general, i don't want to touch anything oracle owns with a ten foot pole
but that's hardly possible 18:26
RabidGravy: one of your last tweets
18:26 sjoshi joined
mspo timotimo: oracle holding it is probably a good thing since it's slightly less likely to get sold to one of those patent troll companies 18:26
RabidGravy oh yeah, my general approach is to implement just enough to get it to work with a given service :) 18:27
timotimo i'm not sure i'm able to read a patent
RabidGravy isn't there an oasis or w3c or something spec though?
jnthn For oAuth2? There's RFCs. 18:29
mspo timotimo: don't bother because you can get sued for anything even if it's barely related
jnthn tools.ietf.org/html/rfc6749
timotimo yeah
18:29 ugexe left
mspo the one from that article is something about ecommerce 18:29
like very specifically
jnthn Also tools.ietf.org/html/rfc7662
RabidGravy yeah I knew I read it somewhere, got confused and settled on my current approach 18:30
18:30 khagan joined
timotimo i don't have anywhere near the necessary amount of focus that'd be needed to ingest patent language 18:31
18:32 mcmillhj left 18:33 mcmillhj joined 18:34 kjs_ left, cdg left 18:42 kjs_ joined
hoelzro timotimo: when you mentioned a slang for my idea earlier - I would "just" need to add some language construct that tacks a new intializer on top of $*UNIT[0], right? 18:53
timotimo um, i guess so?
the language construct may be as simple as "end of file" :)
hoelzro that should work nicely =) 18:54
timotimo :P
maybe you can already do the thing the moment your slang gets incorporated, or maybe even without a slang altogether? 18:55
hoelzro oh, yeah, haha 18:56
well, the slang incorporation would be at BEGIN time, right?
18:56 ugexe joined
hoelzro hmm 18:56
yeah, I don't think that would work
it need to happen at INIT time, unfortunately =/ 18:57
*it needs
18:57 zengargoyle left
hoelzro (I want to write a module that allows users to write POD transform modules that don't require any work beyond DOC use Pod::My::Module) 18:57
19:06 sjoshi left 19:08 zengargoyle joined 19:09 mohae_ joined 19:10 mohae__ joined 19:11 wamba joined, mohae left 19:12 darutoko left 19:14 cgfbee joined
RabidGravy timotimo, going back to the Medium.com API I suspect I will just go for the "Self-issued access tokens" approach in the first place and not worry about the full OAuth2 dance 19:14
19:14 mohae_ left 19:15 kjs_ left 19:28 andreoss left 19:29 zacts left 19:30 smls joined 19:33 espadrine left 19:38 [Coke]_ joined 19:39 [Coke]_ is now known as [Coke]
[Coke] finally drags himself into the 2010s and switches to tmux 19:39
El_Che what triggered the switch? 19:41
(still using screen)
[Coke] tmux -CC
19:41 kyclark_ left
[Coke] being able to have my original screen tabs as 2 separate OS X windows and having it remember the settings in between connections. 19:42
19:43 mohae__ left, mohae joined, canopus left
RabidGravy to be honest I'd probably use scr or jsb multiview if they were still going :-\ 19:43
El_Che as a linux user (and linux on a VM when windows imposed), I mostly use screen to leave processes running. As a for window management, I just open an other gui terminal for a new session 19:44
what with the the drama on blogs.perl.org. Zoffix seems pretty pissed of. Hopefully it will fade 19:45
grondilu El_Che: consider switching to tmux. I did and I'm happy about it. 19:47
for one it's more robust in terms of connection loss. 19:48
RabidGravy El_Che, yeah I'm mostly in the same place re terminals 19:49
19:51 canopus joined 19:53 itaipu left 19:55 TEttinger joined 19:58 kyclark_ joined 19:59 itaipu joined 20:01 TheLemonMan left
TimToady m: my @pieces = <mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>; say [⊎] @pieces».Hash 20:01
camelia rakudo-moar a4cc1c: OUTPUT«bag(mouse(8), frog(5), cat(5), bird, dog(2))␤»
20:01 TheLemonMan joined
awwaiid I don't even 20:04
hoelzro so the multi-set union operator implicitly adds duplicate values?
awwaiid unrelatedly -- when I'm in a loop anything I call can do 'next' or 'last', dynamic like. Any way to stop them, maybe make it raise an error? I'm trying to make it so that 'last' doesn't exit the REPL 20:05
hoelzro awwaiid: I was looking at that bug earlier =P)
20:05 TheLemonMan left
hoelzro I think it should be possible now that the REPL is all in REPL.pm 20:05
TimToady that's what multi-set union means, dumping two bags into one
hoelzro awwaiid: CONTROL { ... } should do it (I think)
ah ha
awwaiid hoelzro: I've got it catching 'return', but stopping 'next' / 'last' via a CONTROL { ... } has weird consequences
hoelzro oh, really? =/ 20:06
awwaiid well. maybe it shouldn't and I need to golf a bit
but I think CONTROL { } maybe is only supposed to trigger when it _can't_ do 'next' ?
though it seems to catch it all the time
jdv79 i thought the 5 6 crap was behind us. guess that was overly optimistic...
RabidGravy what is the [⊎] character, and can it be composed? 20:08
TimToady it's just a reduce
20:08 cdg joined 20:09 TheLemonMan joined
hoelzro awwaiid: next should raise a control exception that an enclosing loop construct should catch via CONTROL 20:09
RabidGravy no, no the actual character in the brackets, I can't see what it is :)
TimToady it's just a ∪ (union) with a teeny tiny + inside, which is pretty indicative of what it's supposed to do to the values :) 20:10
20:10 kjs_ joined
hoelzro RabidGravy: www.fileformat.info/info/unicode/ch.../index.htm 20:10
it all makes sense now!
20:10 grondilu left
RabidGravy it doesn't appear to be composable with three keystrokes :-\ 20:11
TimToady oh, that kind of composable 20:12
I just type 'u union' and copy/paste out of the list :)
oughta be U+ or some such, I suppose
hoelzro isn't that the origin of the U+XXXX notation for Unicode? 20:13
TimToady m: my @pieces = <mouse 1>, <cat 3>, <bird 1>, <dog 2>, <frog 5>, <cat 2>, <mouse 7>; say [(+)] @pieces».Hash 20:14
camelia rakudo-moar a4cc1c: OUTPUT«bag(mouse(8), frog(5), cat(5), bird, dog(2))␤»
TimToady my program for looking up unicode char is called 'u'
I use it often enough that I have a single-char alias 20:15
dalek line-Perl6: 7d08b32 | niner++ | lib/Inline/Perl6.pm:
Little documentation update
awwaiid docs.perl6.org/routine/($PLUS_SIGN) -- baggy additon operator
20:15 nowan joined
TimToady and I have a program 'unik' that lists composable chars, but no entry for multisets 20:16
dalek line-Perl6: c7697b1 | niner++ | lib/Inline/Perl6.pm:
Version 0.07
RabidGravy yeah in vim it's fine but six keystrokes
hoelzro TimToady: which program is it?
hoelzro uses unichars
RabidGravy: map it to a digraph then =) 20:17
TimToady I've posted it here several times, just a p5 code the uses 'do' to pull in the table and does a direct lookup
hoelzro ahhh
RabidGravy It's not something I do a great deal, don't automate until you need to do it more that once :) 20:18
TimToady there are fancier compose tables out there that probably include ⊎, but I haven't been able to get them to work with anthy
20:19 woolfy joined
RabidGravy yeah I think the xcompose thing here let's you set them up, and <Compose> U + doesn't do anything right now :) 20:19
Xliff Anyone know of a module or set of modules that can convert color names to hex values (or RGB)? 20:22
If not, I might have a solution. =)
I have X11 and Pantone C colors converted to something useable by Perl6. Was wondering if anyone had other lists that I could add to the stack? 20:23
20:24 zacts joined
awwaiid hoelzro: ok ... problem is that the CONTROL { ... } is in a block in which I actually DO want to do like 'next REPL' now and then. I'm now moving the CONTROL into a deeper method, but that is where things go weird. 20:24
20:25 cdg left
hoelzro ah ha 20:25
awwaiid: you said in here you're going to Strange Loop next month, right?
awwaiid yes 20:26
you?
we should all go
hoelzro I'll be there =) 20:30
if you don't have a chance to fix this by then, we can team on it in person =)
heck, we should have a mini REPL.pm hackathon
awwaiid indeed 20:33
I have a smaller one, and am shrinking it further
hoelzro: gist.github.com/awwaiid/488cb1ef1d...fcd314eaa8 20:34
you can see here that it works for next/last/return, but now when you do a regular exception it is almost like the CONTROL still takes affect even though the scope is different, and it takes affect AFTER the the initial exception is caught 20:35
I'm golfing further now
20:36 nadim joined 20:37 canopus left
hoelzro interesting... 20:38
20:38 mvorg joined
RabidGravy Xliff, do it! But make it pluggabe perhaps so if someone comes up with some new colour lists it's easier :) 20:38
El_Che lizmat & woolfy: don't give out all the camelia stickers at yapc. Leave on for me :) 20:39
lizmat El_Che: we will :-) 20:40
El_Che \o/
awwaiid hoelzro: gist.github.com/awwaiid/faa4a37e57...a111a7925c you can see here that the second loop gets into the CONTROL block even though it shouldn't 20:44
woolfy Claudio Ramirez: we have two types of Camelia stickers: round ones that I ordered to make by a Dutch company, and hexagonal full-colour stickers made by Mark Keating. 20:45
[Coke] we should make docs.perl6.org the main link on perl6.org/documentation/ 20:46
awwaiid [Coke]++ # yep
[Coke] I'm sure it's been mentioned before, just hit me today because I went through the main page first. 20:47
hoelzro wth 20:48
[Coke] has to figure out how to use start properly. blah.
20:49 canopus joined
timotimo [Coke]: i agree, it should get a big button at the top or something 20:49
maybe like a hero unit
perhaps smaller than a typical hero unit?
lizmat m: await start { say "started" }; say "done"
camelia rakudo-moar a4cc1c: OUTPUT«started␤done␤»
20:49 brrt joined
El_Che Wendy van Dijk: thx, curious how they look 20:49
[Coke] lizmat: don't want to await, I'm in a callback where I don't have control over the main loop. 20:51
it'll probably be fine if no errors occur...
awwaiid m: gist.github.com/awwaiid/7acc14380c...b42933b55a 20:52
camelia rakudo-moar a4cc1c: OUTPUT«EXCEPTION: forced exception␤ in sub catch-control at <tmp> line 6␤ in block <unit> at <tmp> line 10␤␤Caught a CONTROL (Died with CX::Last␤)␤ in sub catch-control at <tmp> line 4␤ in block <unit> at <tmp> line 10␤␤»
lizmat well, you need to do something with the returned Promise, otherwise you run the risk of the program exiting before the started work is done
awwaiid I only expect that code to catch the exception, not enter the CONTROL block
lizmat m: start { say "started"; sleep 2; say "done" }
camelia ( no output )
lizmat m: start { say "started"; sleep 2; say "done" }
camelia ( no output )
lizmat m: start { say "started"; sleep 2; say "done" }
camelia ( no output )
lizmat m: start { say "started"; sleep 2; say "done" }; sleep 1
camelia rakudo-moar a4cc1c: OUTPUT«started␤»
hoelzro awwaiid: that's odd indeed - I wish I knew more about control blocks now =/ 20:53
awwaiid well docs.perl6.org/syntax/CONTROL makes it sound like CONTROL { ... } should only get invoked when there is an _exception_ from a control flow. I guess I should look at roast 20:54
hoelzro good idea 20:55
[Coke] lizmat: it's a bailador app; so the last line puts the app into a non-busy wait so things can connect. 20:56
20:56 AndyBotwin joined
lizmat [Coke]: so you're saying you shouldn't have to worry about the program exiting before the started work is done? 20:56
[Coke] so, first pass, I probably -can- just wrap all the backend stuff in a start {} block.
20:57 BillSussman left
[Coke] lizmat: aye. 20:57
just seems like I'm cheating too much here. :)
lizmat [Coke]: then what is the problem, just start {} :-)
awwaiid hoelzro: roast says CONTROL happens all the time, and doesn't mention die, github.com/perl6/roast/blob/master.../control.t 20:58
20:58 harmil_wk joined 20:59 skids left, zacts left
awwaiid hoelzro: well. I can work around it by returning a special value instead of die'ing 20:59
harmil_wk I think that it's safe to say that this is not the best way to generate the sequence defined by n*2^(n-1) : 21:00
m: say ^10 .map: -> $n { {[+] [<<+>>] [X] ^2 xx $n}}
camelia rakudo-moar a4cc1c: OUTPUT«Use of uninitialized value of type Any in numeric context in block at <tmp> line 1␤(0 1 4 12 32 80 192 448 1024 2304)␤»
nadim sharing a bit of YAPC with P6 ... imgur.com/0whNEcV
many people here talking about P6, namely not knowing if they should try or not
we need to do something about it 21:01
timotimo what about wendy's brochure?
21:01 kaare_ left, kjs_ left
harmil_wk Minor side point: I don't think that warning should have happened. xxing by zero is sketchy, but not that sketchy. Shouldn't it just return the null Seq? 21:02
m: ^2 xx 0
camelia rakudo-moar a4cc1c: OUTPUT«WARNINGS for <tmp>:␤Useless use of "^" in expression "^2" in sink context (line 1)␤»
harmil_wk m: say ^2 xx 0
camelia rakudo-moar a4cc1c: OUTPUT«()␤»
harmil_wk Hmm, it does.
21:02 brrt left
harmil_wk Oh, it's probably because of reducing on an empty list. That makes sense. 21:03
timotimo m: say [X] ^2 xx 0
camelia rakudo-moar a4cc1c: OUTPUT«(((Any)))␤»
lizmat sleep& 21:04
timotimo that's where it comes from i expect?
m: say [X] (^2 xx 0)
camelia rakudo-moar a4cc1c: OUTPUT«(((Any)))␤»
harmil_wk Yah
timotimo m: say [X] ()
camelia rakudo-moar a4cc1c: OUTPUT«(((Any)))␤»
timotimo kinda weird :)
harmil_wk Though that's probably not the right answer either
hoelzro awwaiid: that sounds good
nadim timotimo: I haven't seen it. but that they talk about not knowing is good
timotimo nadim: better than "no i don't use it because i heard it gave a friend of a colleague pimples on the nose" 21:05
harmil_wk heh
nadim timotimo: we'll make a few converts. i may have a short talk about it and shake them a bit 21:07
timotimo sounds good :)
nadim timotimo: did you have time to look at the seg fault code?
21:08 cognominal joined
timotimo sorry, i have not 21:08
that's the one where unlocking a mutex explodes, right?
nadim yes 21:09
I can't install modules, it's a pain
I'll install one or two by hand in the meantime
timotimo excuse me, what do i have to do again? install zef, and then what?
nadim nedd text::ansicolor for a talk
timotimo: it's going to work on your box 21:10
timotimo: it's an intel microcode-libc-mutex problem.
timotimo so how do you expect me to even look at it? 21:11
nadim I posted a link to the stack trace
timotimo: I don't expect anything, but I sure would like that you have a look
let me find the stack trace
El_Che woolfy++: I saw live that you announced FOSDEM!
harmil_wk nadim: I think the point is that unless one has the specific hardware that you do, it's not likely to be something that can be investigated. Now, if you wanted to take a look at it... 21:12
nadim timotimo: nopaste.linux-dev.org/?1119781
21:12 mcmillhj left
nadim I wonder if the uv_mutext_lock can be replaced by something else 21:13
otherwise a libc without elision is needed
timotimo: maybe TimToady would like to have a look, i sat behind him all day. if it is something he'd like to do. I'd help but I am afraid I won't be very useful 21:15
21:15 wamba left, itaipu left
nadim timotimo: the other possibility is a remote session. 21:15
timotimo i'm not sure libuv has a different kind of lock that we could use 21:16
maybe we could just plop a reentrant mutex in there if the current one is not reentrant
and thus it'd tickle a different code path in your libc?
21:17 itaipu joined
nadim I think that is worth a try, if you have a branch, I'll run the tests 21:17
tailgate If I make a change to a module I published on ecosystem, do I need to send a new pull request?
timotimo other than that you can implement the lock with a busy-loop of atomic operations
hoelzro tailgate: nope
nadim I think this problem is going to appear more and more as this hardware is getting popular
timotimo nadim: what kind of special hardware is this? 21:18
you said it's an intel chip, so ... the kind pretty much half the population has in their desktop computers?
nadim not special, newer
timotimo so you're saying that anything that uses the same kind of lock that libuv uses will randomly segfault on the newest intel chips?
what the fucking madness is this 21:19
tailgate there are non-x86 desktops?
timotimo tailgate: sure
i can imagine some powerpc macs still being in use
hoelzro timotimo: Madness? THIS IS PERL 6!
nadim timotimo: there are applications, games, ... that have had the same kind of problems, all at the same place
tailgate I know ARM servers...and ARM cell phones...and I guess there are a few ARM netbooks
timotimo kicks hoelzro into a pit filled with cake 21:20
tailgate: the 50% number was to contrast intel cpus vs amd cpus
nadim timotimo: some mismatch between libc and the microcode patches on haswell architecture, and some previous too
hoelzro =)
geekosaur would still be using his ibook if its hard drive hadn't died
timotimo because if amd went ahead and said "hey, intel crashes when using locks, and they are really popular, so we should make our cpus also crash when unlocking locks", then i'd have the whole hardware industry fired, because that would simply be wrong. 21:21
geekosaur (sadly replacing an ibook's hard drive is a complete teardown)
hoelzro timotimo: sounds sadly similar to Nvidia =/ 21:22
timotimo hoelzro: what, the pit filled with tasty cake?
nadim here is an example bug report on debian bugs.debian.org/cgi-bin/bugreport....bug=800574 21:23
hoelzro haha, I wish
timotimo nadim: that sounds like it's firmly Not My Department 21:25
ugexe it appears related to module loading or precomp
21:25 zacts joined
nadim timotimo: its a glibc problem 21:25
lwn.net/Articles/534758/ 21:26
ugexe looking at his RAKUDO_MODULE_DEBUG=1 output and comparing to mine, his segfaults without reaching github.com/rakudo/rakudo/blob/1728....nqp#L1124
nadim this article explains thtat it implements different types of locking, elision being one of them
not using elision in the locking should fix the problem
woolfy Claudio Ramirez: I indeed announced that I submitted proposals to FOSDEM for devroom & booth, and that we probably will get them, and that I will accept talk proposals. I made sure I included a little bit of uncertainty... :-) 21:27
ugexe it seems to precompile and load the dependencies ok, but fails while trying to merge the last one
nadim the other way is to have a specific glibc, unfortunately, in debian-ubuntu, glibc is compiled with elision
which means that this would force all the users of skylake-some-microcode to update their glibc 21:28
and the packaging system is broken anyway, I had a try at it earlier today, I'll try again 21:29
21:29 cygx joined
cygx o/ 21:29
nadim IMHO, if there is another locking mechanism and it removes the risk of users getting this error when running P6, it would be nice to look at it
cygx awwaiid: the behaviour you see is not because of CONTROL, but because the regular exception is resumable, ie the stack has not yet been unwound 21:30
cf gist.github.com/cygx/7efc3f49089c7...e8c500b81c
timotimo well, is there a way to tell libc to not use elision? like a #define we can set when we compile libuv?
hoelzro I don't mean to be negative, but isn't this something that glibc should be taking care of? 21:31
geekosaur you have to rebuild glibc itself
nadim there is but the packaging system seems broken, I tried to repackage it with the right options earlier
21:31 cognominal left
hoelzro I mean, part of the "contract" with glibc when it provides locks is that they work, right? 21:31
timotimo no, your contract with computers is that computers Never Fucking Work
hoelzro timotimo++ # wisdom 21:32
21:32 itaipu left
nadim timotimo: there is even a debian request for the possibility to switch elision on-off at run time, but it seems to be dead in the water 21:32
timotimo we can implement a little signal handler for segfaults 21:33
nadim i'll try to talk with ubuntu development tomorrow but it seems unlikely to happen in the short term
timotimo it'll use libunwind to discover if the crash happened in an unlock operation, then it'd turn HLE off and resume
geekosaur timotimo, the problem with that is you don't always get a segfault, sometimes yoy get silent data corruption
awwaiid cygx: ah, interesting.
timotimo nadim: so why exactly didn't a microcode update fix the problem on your machine? 21:34
nadim I have no idea, the microcode patch that was already installed is not old. the one I installed today s a month old. 21:36
jnthn uv_mutex_lock is, afaik, just a thin wrapper (perhaps even a compiled-away wrapper) around pthreads mutexes.
nadim it seemes that the time of mutex used in the locking, via libc, is something that can be chosen, elision being one among other types 21:37
jnthn: that's what I gathered too
jnthn And those are absolutely bog standard.
I guess Windows uses a different mechanism, if you're looking for alternatives :P 21:38
timotimo use dietlibc instead of glibc? 21:39
21:39 mcmillhj joined
jnthn Do we know if we're using pthreads mutexes in some highly dodgy way that trips over this problem? 21:39
21:39 pmurias left 21:40 cognominal joined
timotimo we could build a little loop that just reads random memory from commonly accessed regions of the program 21:40
that'll surely abort the transaction and fall back to a real lock
jnthn 'cus if it's as simple as "pthreads mutexes are broken" I can only imagine a huge number of things would be affected
21:41 CIAvash left
ugexe it occurs in Perl6/World.nqp method load_module 21:41
nadim it seems that elision-TSX is not the simples thing to implement right software.intel.com/en-us/articles/...ision-code
timotimo nadim: you can get the perl6-level backtrace from within gdb, btw
jnthn ugexe: In a single-threaded program?
timotimo just "up" until you hit a frame that has a "tc" for you
and then "call MVM_print_backtrace(tc)" or what it's called 21:42
21:42 smls left
nadim timotimo: wasn't the stack trace i posted enough? 21:42
jnthn (e.g. you can hit this without actually using threads at all?)
ugexe jnthn: he never reaches the Import stage
timotimo nadim: it's not all. no clue if it's enough or not
jnthn Well, technically a module mainline coulda started threads, but yeah, it's unlikely. 21:43
That's a real wtf though.
timotimo to be totally honest, i'd rather smash my head against a hard surface than try to ... anything regarding this
nadim I'll do the work on this machine and can even give you guys access
timotimo: don't smash rocks ;) 21:44
how do you get these perl6-lvel backtrace? do I run the perl6-gdb-m? 21:45
timotimo you're already in a gdb, are you not?
it doesn't look like you have any debug symbols at all 21:46
nadim perl6-gdb-m seems to be there, yes
timotimo it doesn't show function signatures in that backtrace, is what i mean 21:47
nadim up gives me the same results as the trace I posted 21:48
do I need a p6 with extra dbug info? 21:52
timotimo not p6, just moar 21:53
perl Configure.pl --debug=3 ...
21:55 kyclark_ left 21:57 rba_ joined
nadim unknown option debug! 21:57
timotimo that's the moarvm Configure.pl
nadim ah, not rakudo
timotimo: where does rakudo download moar? or shall i get more separately? 21:59
timotimo it's either under moar/ or under nqp/moar/
with moar or less Vm or capitalization
nadim nqp/moaarVM got it 22:01
nqp/MoarVM bleah!
interesting, moar is on a detached HEAd 22:03
22:03 n1lp7r joined, cognominal left
nadim timotimo: ok, configured and build, next? 22:04
timotimo "make install"
that'll be enough
but make install inside moar's folder only
nadim ok done 22:05
jnthn sleep & 22:06
timotimo now your perl6-gdb-m will hopefully give you better stack traces 22:07
TheLemonMan m: say (sub e(Any \ --> Mu) { ... }).signature
camelia rakudo-moar a4cc1c: OUTPUT«($)␤»
TheLemonMan m: say (sub e(Any \--> Mu) { ... }).signature
camelia rakudo-moar a4cc1c: OUTPUT«($ is raw)␤»
TheLemonMan bug or not ?
timotimo pretty weird
the parser clearly thinks you have a sigil-less variable in the second one 22:08
nadim timotimo: absolutely no change
timotimo how does a "bt full" look? 22:09
nadim the same 22:10
but says: no symbole table available 22:11
timotimo not even line numbers?
nadim nada
timotimo did you get any lines that looked like compilation?
22:11 mcmillhj left
timotimo oh 22:11
duh
when you build moar with --gen-nqp, it'll give it a --prefix
nadim still using the same moar, right?
timotimo you've now got a rakudo/nqp/install/bin/moar 22:12
whereas you would have wanted an install/bin/moar
or whatever you came up with
nadim shall I copy the library there?
timotimo no
re-configure with the proper --prefix
22:14 mcmillhj joined
nadim the rakudo/install/bin right 22:15
two directories up
timotimo the prefix is what install/ is 22:19
22:20 mcmillhj left
timotimo i.e. you'll want to have a --prefix that ends in "install/" 22:21
22:21 mcmillhj joined
nadim did that, obviously the prefix has to be with ../.. (oh my eyes) as a path to the directory gives very weird install commands. and the command doesn't fail even if the install directories are completely wrong 22:22
timotimo "completely wrong"? 22:23
how could they be? it'll take literally any path
the only thing that's not allowed in a path is the null byte, afaik
nadim this for example usr/bin/perl -MExtUtils::Command -e cp 3rdparty/dyncall/dyncall/*.h /home/nadim/nadim/devel/repositories/rakudo/nqp/MoarVM/~/nadim/devel/repositories/rakudo/install/bin/include/dyncall 22:24
~ in prefix wasn't welcome :)
timotimo oh, hehe
nadim let me see what I can do
make install succeeded with those paths 22:25
IE did return 0
timotimo so you have a folder named "~" inside your MoarVM folder now?
22:25 mohae_ joined
nadim actually yes :) 22:26
I configure with .., let'ssee what I get 22:27
timotimo: can make run with -j 8 or 16 ?
and work properly
22:28 mohae left
timotimo in moar, yes 22:29
nadim OK
timotimo in nqp, only one job per back-end you're building
in rakudo, same.
nadim it's installed in the right place, let's see what gdb gives us 22:30
22:32 setty1 left 22:33 Sgeo joined
nadim timotimo: nopaste.linux-dev.org/?1119791 22:34
say if you'd like the full backtrace (looked interesting with all the stuff optimized away) 22:35
22:36 cdg joined 22:38 rkazak joined
TheLemonMan m: say (sub (Any \) { }).signature 22:38
camelia rakudo-moar a4cc1c: OUTPUT«($ is raw)␤»
TheLemonMan m: say (sub (Any \ ) { }).signature
camelia rakudo-moar a4cc1c: OUTPUT«($)␤»
TheLemonMan even better (or worse) 22:39
22:39 firstdayonthejob left 22:40 Util left, moritz left 22:42 moritz joined 22:43 mohae joined
nadim timotimo: let's continue tomorrow 22:46
22:46 mohae_ left 22:47 Util joined 22:48 TheLemonMan left 22:52 edehont joined 22:54 zacts left 22:57 cygx left, rindolf left 22:58 RabidGravy left 23:02 edehont left 23:23 Skarsnik left 23:28 Zoffix joined 23:29 ptolemarch left 23:33 cpage_ left 23:40 kurahaupo left 23:46 atweiden joined
atweiden anyone know what this error message is about? "Package ... is insufficiently type-like to qualify a parameter" 23:48
Zoffix atweiden, what's the code? 23:49
atweiden Zoffix: bitbucket.org/atweiden/txn-parser-...posting-is 23:50
Zoffix :) that's the error :) What's the code that triggers it? I recall seeing something similar but forget what the reason was
atweiden idk what triggers it. i can't get the code to compile 23:52
Zoffix Are you able to share that code?
atweiden Zoffix: ofc, you could `hg clone bitbucket.org/atweiden/txn-parser-ast` 23:53
23:53 cdg left
atweiden the problem appears to be in lib/TXN/Parser/AST/Entry.pm 23:53
Zoffix atweiden, what do I run to trigger the error>?/ 23:54
atweiden p6 t/grammar-actions/01-ledger.t
23:55 BenGoldberg joined
atweiden you may need to install libxxhash for your platform 23:55
23:55 n1lp7r left