»ö« 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:02 zeddy_k joined 00:05 Geth left 00:06 Geth joined, ChanServ sets mode: +v Geth 00:08 Geth left, Geth joined, ChanServ sets mode: +v Geth 00:10 Geth left, Geth joined, ChanServ sets mode: +v Geth 00:14 empT left 00:18 markong left 00:21 comborico left 00:24 comborico1611 joined 00:26 dct left 00:40 ZofBot left 00:42 ZofBot joined, ChanServ sets mode: +v ZofBot, buggable left, buggable joined, ChanServ sets mode: +v buggable 00:45 Rawriful left 00:48 johnnymacs left 00:52 skids joined 01:00 lizmat joined 01:01 pmurias left 01:04 Cabanossi left 01:05 Cabanossi joined, lizmat left 01:11 leont left 01:12 char_var[buffer] joined 01:22 konsolebox left 01:29 konsolebox joined, Herby_ joined
Herby_ \o 01:29
o/ 01:31
01:32 johnnymacs joined 01:35 AlexDaniel left 01:49 cdg joined
char_var[buffer] o/ Herby_ 01:52
01:54 cdg left 01:57 lizmat joined 01:58 empT joined 02:03 empT left
labster m: printf |(「printf |(「%s」xx②)」xx②) 02:04
camelia printf |(「printf |(「%s」xx②)」xx②)
labster The fact that the quote language picks up on nested brackets makes for some really nice-looking quines.
Kaiepi how am i screwing up this http request? hastebin.com/etahukucid.php 02:06
02:06 comborico1611 left 02:12 zeddy_k left
MasterDuke Kaiepi: what's the error you get? 02:17
02:17 ZzZombo left, ZzZombo joined
Kaiepi 400 Bad Request 02:18
hastebin.com/atexubayip.http
oh i seem to be missing some headers hastebin's using 02:20
and Transfer-Encoding should be Accept-Encoding 02:21
this works hastebin.com/ozosagayuf.php 02:22
MasterDuke any particular reason you're using "raw" IO::Socket::SSL? 02:27
02:28 aborazmeh joined, aborazmeh left, aborazmeh joined 02:34 jeromelanteri joined 02:46 ilbot3 left 02:56 Kaiepi left 02:57 ilbot3 joined, ChanServ sets mode: +v ilbot3 02:58 Kaiepi joined 03:15 aborazmeh left 03:25 empT joined 03:29 empT left 03:33 ryn1x joined
ryn1x . 03:33
03:34 ryn1x left 03:38 ufobat_ joined 03:41 ufobat___ left
Xliff lizmat: Muggles? LOL! 03:42
03:45 lookatme joined 03:50 aborazmeh joined, aborazmeh left, aborazmeh joined 04:03 Guest999 joined, raiph joined 04:05 cdg joined 04:07 Guest999 left, raiph left 04:10 cdg left 04:20 Cabanossi left 04:22 Cabanossi joined 04:28 aborazmeh left 04:47 skids left 04:59 xtreak joined 05:00 Herby_ left
ZzZombo Can I like in Perl 5 using glob, add symbols dynamically? 05:19
05:29 eliasr left 05:30 johnnymacs is now known as dorothyw 05:34 wamba joined 05:50 khw left
sacomo ZzZombo: docs.perl6.org/language/5to6-nutshell#*_Glob 06:24
Kaiepi <MasterDuke> any particular reason you're using "raw" IO::Socket::SSL? 06:34
i'm trying to debug why it doesn't always work on my system 06:35
this coredumps: use IO::Socket::SSL; my $socket := IO::Socket::SSL.new(:host('hastebin.com'), :port(443)) 06:36
closing it directly after creating the socket stops that from happening, but trying to read any of its properties still coredumps 06:38
06:40 giraffe joined 06:41 empT joined
Kaiepi can't read the coredump from perl6-gdb-m: Error while reading from file: Malformed UTF-8 06:41
oh i just needed to set the breakpoints earlier 06:43
06:44 lowbro joined, lowbro left, lowbro joined 07:02 dorothyw is now known as johnnymacs 07:10 imcsk8 left
Xliff ZzZombo: Something like this? perl6advent.wordpress.com/2012/12/...-y-things/ 07:12
07:15 wamba left 07:17 imcsk8 joined
nine is on a train to Bruxelles :) 07:19
ufobat_ oh cool! enjoy fosdem! 07:25
07:26 darutoko joined 07:28 ZzZombo left, ZzZombo joined
ZzZombo Not quite. Dynamic variables is a different domain altogether. 07:30
nine ufobat_: thanks :) 07:40
07:42 espadrine_ left 07:43 empT left 07:44 empT joined 07:45 lookatme left 07:46 wamba joined 07:49 domidumont joined 07:50 lookatme joined 07:55 domidumont left, domidumont joined 08:11 cschwenz joined 08:17 espadrine_ joined 08:18 leont joined
stmuk nine: are you going to FOSDEM? 08:20
leont is! :-) 08:21
stmuk yay 08:24
we are probably hitting the Delirium a lot later (hopefully when its quieter) this year 08:29
08:29 abraxxa joined 08:32 espadrine_ left 08:34 xtreak left 08:35 leont left 08:38 xtreak joined
nine stmuk: I am 08:40
08:42 scimon joined 08:52 leont joined 08:54 MasterDuke left 08:58 xtreak left 09:10 yqt joined 09:11 zakharyas joined 09:13 zakharyas left, zakharyas joined
tadzik \o/ 09:22
stmuk excellent hope to see ppl later! getting on the eurostar shortly
scimon Have a good weekend people. Wish I was going. 09:24
buggable New CPAN upload: Algorithm-GooglePolylineEncoding-1.0.0.tar.gz by SCIMON cpan.metacpan.org/authors/id/S/SC/...0.0.tar.gz 09:32
09:32 xtreak joined 09:34 Kaiepi left 09:35 Kaiepi joined
stmuk scimon: its probably streamed live anyway 09:51
scimon Cool
09:54 eliasr joined
Altreus yeah alas I can't go this year :< 09:58
I'll have the opportunity to try the live streams 09:59
10:07 leont left 10:15 yqt left 10:16 Cabanossi left 10:22 xtreak left 10:34 wamba left 10:35 TEttinger left
ZzZombo m: my @a=1,2,3;@a[*]:delete;say @a 10:38
camelia []
ZzZombo Shouldn't it be an array of 3 "holes"?
moritz I believe deleting at the ends shortens the array 10:39
at least at the tail end
m: @a = 1, 2, 3; @a[2]:delete; say @a.elems
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@a' is not declared
at <tmp>:1
------> 3<BOL>7⏏5@a = 1, 2, 3; @a[2]:delete; say @a.elems
moritz m: my @a = 1, 2, 3; @a[2]:delete; say @a.elems
camelia 2
moritz m: my @a = 1, 2, 3; @a[0]:delete; say @a.elems 10:40
camelia 3
10:44 zeddy_k joined 10:52 AlexDaniel joined 10:54 empT left 10:55 zakharyas left, xtreak joined 10:56 zakharyas joined 10:57 zakharyas left 10:58 zakharyas joined 10:59 wamba joined 11:03 empT joined 11:04 zakharyas left, zakharyas joined 11:07 zakharyas left 11:09 zakharyas joined 11:12 blumsicle joined 11:15 AlexDaniel left 11:23 itaipu joined, blumsicle left
SmokeMachine Hi! Good morning! 11:34
Is it possible to make something like it work?
m: role R[::Type] {::?CLASS.^add_parent: Type}; my R[Int] $a = 42 11:36
camelia Type check failed in assignment to $a; expected R[Int] but got Int (42)
in block <unit> at <tmp> line 1
SmokeMachine It doesn’t use smartmatch ether, right!
11:37 empT left 11:38 markong joined
SmokeMachine m: role R[::Type] {method ACCEPTS($a) {$a ~~ Type}}; my R[Int] $a = 42 11:38
camelia Type check failed in assignment to $a; expected R[Int] but got Int (42)
in block <unit> at <tmp> line 1
SmokeMachine Is it possible?
11:40 AlexDaniel joined
moritz m: role R[::Type] { also is Type }; say R[Int].new ~~ Int 11:40
camelia 5===SORRY!5=== Error while compiling <tmp>
Type does not support inheritance, so R cannot inherit from it
at <tmp>:1
11:40 zeddy_k left, zeddy__k joined 11:42 empT joined
ZzZombo Did anybody comment on this: 11:43
m: role A[$] { }; class C is A[4] {}
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot resolve caller trait_mod:<is>(C, A, Array); none of these signatures match:
(Mu:U $child, Mu:U $parent)
(Mu:U $child, :$DEPRECATED!)
(Mu:U $type, :$rw!)
(Mu:U $type, :$nat…
ZzZombo <ZzZombo> I just found out you can't call ANY inherited methods from submethods under the pretense that "Virtual method call $.v may not be used on partially constructed object (maybe you mean $!v for direct attribute access here?)", despite the object being constructed a long time ago.
jnthn SmokeMachine: I think that's confused. `my T $a = S` is OK is S < T, but in your case S is Int and T is R[Int] and Int < R[Int] is not true 11:45
*is OK if 11:46
I think you want a subset type, not a role
ZzZombo: Just use self.v instead 11:47
11:48 emeric left 11:50 empT left
ZzZombo Works, but what's the difference? 11:51
jnthn $.x is really just $(self.x), but given $.x looks variable-like, we use it as an indicator that - in a non-virtual context - it's not unlikely that $!x woulda been more correct 11:53
And yes, the error text is a bit specific to some of the cases.
Though it's the most common case 11:54
SmokeMachine jnthn: but how could I make a subset of a dynamic choose type?
And in my case I think subset wouldn’t work... what I’m trying to do is a type that should match the same type of another class’ attribute... 11:56
11:56 zakharyas left
SmokeMachine class User { has UInt $.id }; class Post { has Ref[User, “id”] $.author-id } 11:58
And the Ref type would get the type of User.id and “accept” the same type of it... 11:59
jnthn: ^^
12:00 AlexDaniel left
SmokeMachine Is it possible? 12:00
jnthn Damn that's evil, let me think a moment
SmokeMachine jnthn: why do you think that’s evil? 12:06
12:07 AlexDaniel joined
jnthn SmokeMachine: I meant it in a good way :-) 12:10
So the Really Proper way to do it is to write a custom meta-type
But there's actually a far easier way: 12:11
class Ref { method ^parameterize(Mu, Mu:U $type, Str $attr) { with $type.^attributes.first(*.name.substr(2) eq $attr) { .type } else { die "No such attribute $attr" } } }; class C { has Int $.i }; my Ref[C, "i"] $x = 42; say $x.VAR.of
evalable6 (Int)
jnthn So ^parameterize mixes this parameterize method into the meta-object of Ref, and thus we can decide what parameterization means for this type
12:11 jast left
jnthn And we use it to do the lookup 12:12
And nothing cares that what ^parameterize returns has any relation to the type it was called on, so it just happily takes the returned type :) 12:13
This is also vastly cheaper than a role approach
(If it could be made to work, which I don't think it can anyway)
12:14 jast joined, Grauwolf left 12:15 Grauwolf joined 12:16 raschipi joined 12:20 AlexDaniel left 12:25 xtreak left
SmokeMachine jnthn: thank you very much! :) 12:28
12:33 AlexDaniel joined 12:34 rindolf joined 12:38 espadrine_ joined
ZzZombo m: class C { method ^compose{die 'Dieded'}} 12:41
camelia ( no output )
ZzZombo why does that NOT die?
12:41 AlexDaniel left 12:42 emeric joined 12:44 empT joined, Skarsnik joined
geekosaur I'm surprised that isn't a syntax error. ^ is not part of the method name, it is part of the .^ operator which invokes a method in the metaclass 12:45
i.e. it's invoking ClassHOW.compose, not C.(^compose) 12:46
more precisely C.^compose means ClassHow.compose(C)
er ClassHOW
12:51 AlexDaniel joined 12:53 empT left 12:55 AlexDaniel left
SmokeMachine Hi again! I has a problem that I don’t know if it’s a bug or it’s expected... 12:56
m: role Many[Mu:U] {}; class Post {...}; class User {has Many[Post] $.posts}; class Post {}
camelia ===SORRY!===
Cannot find method 'ACCEPTS' on object of type Post
SmokeMachine I had to “fix” with: 12:57
m: role Many[Mu:U] {}; class Post is Mu {...}; class User {has Many[Post] $.posts}; class Post {}
camelia ( no output )
SmokeMachine Adding is Mu on the “stub class”... but shouldn’t it already be Mu?
jkramer I made a little docs patch but I'm not sure how to continue from here. Should I fork the whole repo and send a pull request? 13:00
Skarsnik yes :)
jkramer Also before doing that can someone please review my change and see if it'd be likely to be merged anyway? Maybe I'm completely wrong. :) It's just something I found that should be mentioned in the docs. paste.pound-python.org/show/NrnyAy...tjB8xi72l/ 13:01
Currently it looks like the $start argument is mandatory, but maybe I'm just misreading it. 13:02
13:03 Zoffix joined
Zoffix jkramer: just commit directly. 13:03
SmokeMachine Is that a bug or a “stubbed class” isn’t a child of Mu yet? 13:04
Zoffix You're a member of a perl6 org
m: my @a = <a b c>; @a.splice; dd @a 13:05
camelia Array @a = []
Zoffix jkramer: ^ doesn't look like it's mandatory
jkramer Zoffix: Oh right, I think I made a doc change a few years ago and was added to all the repos :)
ZzZombo jnthn <ZzZombo> why does that NOT die?
Zoffix there's like a billion splice candidates
jkramer Zoffix: Yeah I know, I found out by accident, but the docs suggest it's mandatory. Or at least don't mention that it can be omitted and what the behavior is in that case
Zoffix e: [].^lookup("splice").candidates».signature».say 13:06
evalable6 (Array:D \SELF: *%_)
(Array:D $: Whatever, *%_)
(Array:D $: Callable:D $offset, *%_)
(Arra…
Zoffix, Full output: gist.github.com/394375bf42d6b97161...b574883e96
Zoffix jkramer: ah yeah :) Your patch could also use a fix to the shown signatures. Need to add a `?` to $start
jkramer Zoffix: Or maybe $start = 0, as defined in native_array.pm: multi method splice(strarray:D: $offset=0, $size=Whatever, *@values) 13:08
Zoffix ok
raschipi buggable: /win 23 13:10
buggable raschipi, Thank you for entering Accidental /win Lottery! The next draw will happen in 3 weeks, 5 days, 10 hours, 49 minutes, and 9 seconds
tadzik . o O ( who bugtracks the bugtrackers? ) 13:11
Zoffix m: class Foo { method ^name(|) { "meows" } }.^name.say 13:12
camelia meows
Zoffix geekosaur: looking at the actions, those go through `add_meta_method` routine 13:13
m: geekosaur: looking at the actions, those go through `add_meta_method` routine 13:14
camelia 5===SORRY!5=== Error while compiling <tmp>
Bogus term
at <tmp>:1
------> 3ooking at the actions, those go through 7⏏5`add_meta_method` routine
expecting any of:
argument list
infix
infix stopper
Zoffix oops. copy-paste fail
m: class C { method ^compose(|) {die "Dieded"}}.^compose
camelia Dieded
in method compose at <tmp> line 1
in block <unit> at <tmp> line 1
Geth doc: bba24ab323 | (Jonas Kramer)++ | doc/Type/Array.pod6
$start in splice defaults to 0 and can be omitted
13:15
synopsebot Link: doc.perl6.org/type/Array
squashable6 🍕🍕🍕 First contribution by jkramer++! ♥
jkramer \o/
Zoffix Oh, squashathon is on 13:16
Skarsnik m: my $a; our $b is export := $a;
camelia ( no output )
Zoffix AlexDaniel`: I thought we were doing testsneeded this month?
squashable6: status 13:17
squashable6 Zoffix, 🍕🍕 SQUASHathon is in progress! The end of the event in 1 day and ≈22 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
Zoffix, Log and stats: gist.github.com/8bb23306efb354ce8d...1dede51c7c
Skarsnik m: my $a; our $b is export := say;
camelia 5===SORRY!5=== Error while compiling <tmp>
Unsupported use of bare "say"; in Perl 6 please use .say if you meant to call it as a method on $_, or use an explicit invocant or argument, or use &say to refer to the function as a noun
at <tmp>:1…
tyil whats the easiest/recommended way to run a for-loop over multiple threads? just add in start, like `for @args -> $arg { start { do-thing() } }`? 13:18
Zoffix tyil: hyper for @args -> $arg { .... } 13:19
tyil oh neat
jnthn ZzZombo: Because the meta-methods aren't mixed in to the meta-object until compose time
tyil the order isn't important, so i could add in race too, right?
jkramer Is there a difference between `hyper for @args` and `for @args.hyper`?
Zoffix tyil: oh yeah
jnthn ZzZombo: If you want that much control, you'll need to subclass ClassHOW and so forth, as modules like Grammar:Tracer do
Zoffix jkramer: IIRC the latter would be serial 13:20
In a for loop. That's why we added statement prefixes.
moritz why did I just read "in for a loop"? :-)
jkramer Also @args>>... implies hyper as well, right? 13:21
tyil Zoffix: it works as expected, thanks :>
nine So far my travel to FOSDEM has been surprisingly unproductive. Unless one counts the insight that there's just no more low hanging fruit for speeding up csv-ip5xs of course.
Zoffix jkramer: it's a hint to the compiler that it may autothread, but isn't a guarantee and currently that's not yet implemented.
jkramer Zoffix: Ah ok, thanks
Zoffix So FOSDEM is happening right now? Anyone got good information to put into the weekly? 13:22
tyil fosdem setup is rn
tomorrow its the actual event
(and sunday as well)
Zoffix m: for <a b c d>.race(:batch) {sleep 1}; say now - INIT now
camelia 4.017822
Zoffix m: race for <a b c d>.race(:batch) {sleep 1}; say now - INIT now
camelia 1.0750424
Zoffix tyil: ^ you could also add a method call if you wanna tweak batch size or degree
nine The train I just boarded in Frankfurt clearly brings lots of people to FOSDEM :)
tyil fosdem.org/2018/schedule/track/per...languages/
those are all on sunday
Zoffix: github.com/scriptkitties/perl6-IRC...le.pm6#L22 is how I have it now 13:23
nine: I'm on my 2nd day in brussels now, trains were pretty empty when I was traveling 13:24
Zoffix tyil: default batch is 64 tho. So unless you're processing over 64 URLs, it'll all be in one batch
tyil couple of other friends will be arriving today, will be picking them up in an hour or 2
hmm
Zoffix race for @urls.race: :batch -> $url {
tyil I dont think you can even fit 64 urls in one irc message
13:25 AlexDaniel joined
tyil race twice? 13:25
Zoffix Yeah
RaceSeq in a regular for look is serial
s/look/loop/;
El_Che Zoffix: perl diner is on saturday evening, devroom sunday all day, booth on both days 13:26
tyil Zoffix: nice, thanks
Skarsnik m:use NativeCall; Module A { our $a is export := cglobal("libc.so.6", "errno", int32) }; require A :ALL; say $a; 13:27
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/pVRn8DKfPG
Variable '$a' is not declared
at /tmp/pVRn8DKfPG:1
------> 03 "errno", int32) }; require A :ALL; say 08⏏04$a;
Zoffix tyil: or just `@urls.race(:batch).map: {$e.reply: "$^url: " ~ self!resolve: $^url }`
tyil once I get colors working as well I'll push the first release of IRC::Client::Plugin::UrlTitle to cpan 13:28
Zoffix Oh, I guess you don't want a .reply since that'd include the user too
tyil yeah
ZzZombo jnthn, what exactly does `EXPORTHOW` do and how can I make use of it in replacing my class' metaclass?
Zoffix But still, if you use the .map, you won't need to write `race` twice
tyil that does look a bit cleaner 13:29
Skarsnik does binding to a sub finally work with export?
Zoffix Skarsnik: only one way to find out :)
ZzZombo Took a look in Grammar::Tracer, BTW>
Skarsnik Well I can't make this example work x)
tyil does the $^url come magically as the name of the list without the s? 13:30
jnthn ZzZombo: The compiler keeps a hash mapping package declarator (class, grammar, etc.) into meta-objects that say what that type means. Entries are made into it for a given lexical scope. 13:31
ZzZombo: EXPORTHOW is the mechanism by which a module says what entries it wants to make
Skarsnik I wonder if my special branch of GPTrixie still make rakudo crash x)
jnthn Sub-packages of it say what you want to happen
Zoffix m: use NativeCall; module A { our $a is export := cglobal("libc.so.6", "errno", int32) }; import A; say $a;
camelia (Any)
jnthn So for example EXPORTHOW::DECLARE lets you add a new package declarator, which is how OO::Monitors works
Zoffix Skarsnik: you wrote `require` instead of `import`. Also, capitalized `Module` 13:32
m: use NativeCall; module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a;
camelia 0
Skarsnik dang Module and module not the same thing?
Zoffix Skarsnik: yeah, looks like binding ain't working
m: BEGIN my $a := 42; say $a
camelia (Mu)
Zoffix Prolly for same reason as here ^
Skarsnik: never seen Module before, so I'd wager that ain't a thing 13:33
Skarsnik 0 is a good return for errno
what c function I could make it fail xD 13:34
nativecallable6, int open(const char *pathname, int flags);
nativecallable6 Skarsnik, sub open(Str $pathname # const char*␤ ,int32 $flags # int␤ ) is native(LIB) returns int32 is export { * }
Zoffix m: use NativeCall; sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a;
camelia 13
Skarsnik oh yeah fopen 13:35
sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a; fopen("/proc/cpuinfo", "r"); say $a 13:36
m: sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a; fopen("/proc/cpuinfo", "r"); say $a
camelia 5===SORRY!5=== Error while compiling <tmp>
Can't use unknown trait 'is native' in a sub declaration.
at <tmp>:1
expecting any of:
rw raw hidden-from-backtrace hidden-from-USAGE
pure default DEPRECATED inlinable nodal…
Skarsnik m: use NativeCall; sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a; fopen("/proc/cpuinfo", "r"); say $a
camelia 13
13
Skarsnik hm
probably not the same error 13:37
m: use NativeCall; sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a; fopen("/proc/cpuinfo", "r"); say $a; say cglobal("libc.so.6", "errno", int32);
camelia 13
13
13
Zoffix $a would not be updated tho, right? 'cause you're not binding
Skarsnik m: use NativeCall; sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a; fopen("/proc/cpuinfo", "w"); say $a; say cglobal("libc.so.6", "errno", int32);
camelia 13
13
13
Zoffix Oh cglobal returns that same value. nm 13:38
Skarsnik oh right
forget the :=
what can I open on camelia? 13:39
timotimo yo Skarsnik, i saw you participate in the SoE race :3
Zoffix m: with "/tmp/meow".IO { .spurt: "meows"; .slurp.say } 13:40
camelia meows
Skarsnik x)
Zoffix Skarsnik: ^ that
Skarsnik you created the file?
nine LOL and right after claiming that there is no more low hanging fruit I found a trick to shave off 1 of 4 seconds of csv-ip5xs' runtime
Zoffix nine: :o
nine++
Skarsnik timotimo, Yes ^^ I need to practice more, since I will run the game at GSM
Zoffix Skarsnik: yeah
m: "/tmp/meow".IO.slurp.say 13:41
camelia meows
Skarsnik m: use NativeCall; sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a; fopen("/tmp/meow", "r"); say $a; say cglobal("libc.so.6", "errno", int32);
camelia 13
13
13
nine It's not particularily elegant though. It's just a new multi candidate for a single positional argument to augment the existing 0 arguments and arbitrary arguments cases
timotimo what's GSM? i only know GSH 13:42
Skarsnik German Speedrun Marathon
timotimo ah, fair enough
Skarsnik marth 28 - 2 april 13:43
nine It does show however that runtime generated code might be the key to gain further generic speedups. Those Captures just are not fast enough. But generating new multi candidates for the actuall calling conditions at runtime is rather simple
timotimo there go my dreams to have rakudo completely unload the compiler in most cases … 13:44
Zoffix making candidates with captures cacheable looks like would produce a ton of win. I see them as reason for slowness all over the shop
13:45 zakharyas joined
nine Zoffix: that sounds like another one of those "suck 4 months out of my life" traps I might fall into 13:46
Zoffix nine: I'm tempted to give it a go too. Though I'm hindered with not having a clue how dispatch and caching works :) 13:47
Zoffix wouldn't mind giving up 4 month of life for that tho
Skarsnik m: use NativeCall; sub strerror(int32) returns Str is native {*}; sub fopen(Str, Str) is native {*}; fopen("/dasdasdsadas", "w"); module A { our $a is export = cglobal("libc.so.6", "errno", int32) }; import A; say $a, strerror($a); fopen("/tmp/meow", "r"); say $a; say cglobal("libc.so.6", "errno", int32);
camelia 13Permission denied
13
13
Zoffix m: my $c := class Foo { multi method z(|c) { rand } }.new; for ^1000_000 { $c.z: $ }; say now - INIT now
camelia 0.6246569
Zoffix m: my $c := class Foo { multi method z($) { rand } }.new; for ^1000_000 { $c.z: $ }; say now - INIT now
camelia 0.32425470
Skarsnik need something else that fopen x)
jnthn nine, Zoffix: I think the answer will be something like exploding flattening things sooner, in-place in the args buffer, for the cases that fit, and putting an interned callsite in place of the flattening one 13:49
Zoffix What's "interned"?
jnthn Look up string interning, then imagine the same for an object representing the shape of a callsite 13:50
Zoffix looks up
jnthn We use those as keys for the multi-dispatch cache *and* for spesh
13:51 araraloren joined
Zoffix Ah, k. I get it now. Thanks. 13:52
jnthn Anyway, a fix in the right place will help both multi-dispatch *and* spesh 13:53
Zoffix That's awesome.
jnthn Yeah, I figured that out a while back, just had no time to act on it. Feel free to. ;-)
Zoffix :)
13:54 rindolf left, rindolf joined 13:56 cdg joined
nine Ah, there's that: /* Can't intern anything with flattening. */ if (cs->has_flattening) return; 14:01
14:01 comborico1611 joined
comborico1611 Yup. 14:02
14:02 abraxxa left, zakharyas left 14:03 cdg_ joined, zakharyas joined, rindolf left 14:04 rindolf joined 14:05 rindolf left 14:07 cdg left 14:10 rindolf joined 14:14 espadrine_ left, Zoffix left 14:16 zakharyas left 14:17 zakharyas joined
zeddy__k should I start learning perl6? is it stable enough to develop in? I'm considering perl and perl6 and I like perl6 syntax more, but it's still under development so I'm in a dilemma 14:19
Skarsnik what you want to do with it?
14:19 AlexDaniel left
El_Che zeddy__k: every language that's not dead is under developement 14:20
zeddy__k: perl 6 has production releases since end 2015
depending on what you do, one language may be more applicable than the other 14:21
zeddy__k simple programs for console that read and write to files and mariadb, maybe some numerical work
also scripts that automate some of my daily work
El_Che zeddy__k: I don't see a problem using perl 6 for that (it had a database module and good math support)
Skarsnik not sure there is a module for mariadb? 14:22
El_Che perl5 has more modules as it's been out for a lot longer
moritz s/hd/has/
El_Che Skarsnik: that's mysql
moritz Skarsnik: the mariadb wire protocol is compatible with mysql
Skarsnik at worse you can use a perl 5 module for that
14:22 rindolf left
moritz (from which it forked) 14:22
Skarsnik Hoo ok
no mariadbclient lib so?
El_Che dbish
github.com/perl6/DBIish#mysql 14:23
zeddy__k awesome, thanks
El_Che zeddy__k: stick around while having fun programming 14:24
Skarsnik I mean there is no mariadb c lib to talk to a mariadb like libmysqlclient
zeddy__k is the O'Reilley book inclusive enough to get to an advanced level?
or can I learn more from the docs on the website
El_Che zeddy__k: I picked up from the docs on the website (I have a Perl 5 background) and asking questions here when the doc wasn't clear 14:25
zeddy__k: I recommend moritz beginners book, though, for a shortcut
www.apress.com/br/book/9781484228982
zeddy__k El_Che: thanks
El_Che it's also on safari in case you have that 14:26
moritz fwiw this is book for people who already know a programming language or two, just not Perl 6
El_Che zeddy__k: actually, I found this a nice intro: www.jnthn.net/papers/2015-spw-perl6-course.pdf 14:27
moritz if you want are new to programming in general, "Think Perl 6" is the better intro
also, perl6book.com/ has an overview of the Perl 6 books out there
El_Che yes, what moritz says. It depends on your background of course 14:28
14:28 rindolf joined
zeddy__k moritz: I'm using Java, C and C++ for my classes 14:28
14:29 empT joined
zeddy__k I'll check out the materials first 14:29
thanks for providing them
14:31 mcmillhj joined
moritz ok, then the o'reilly book will bore you 14:32
14:33 empT left 14:35 wamba left 14:39 teatime joined 14:46 Kaiepi left, Kaiepi joined, Kyo91 joined
nine Oh boy! There's yet another speedup to be made. And this time it _is_ elegant. 14:46
El_Che nine to the rescue! 14:47
nine As I already create multi candidates for method pass through at runtime, I can look up the P5 method once by name and re-use the resulting GV on future alls instead of looking up by string each time 14:48
Doesn't save crazy much, but speed up is speed up :)
El_Che I'll take it!
Kaiepi nice
14:51 Kyo91 left 14:52 raiph joined, Kyo91 joined
raiph m: BEGIN my ($a) = (42); say $a # might be of interest to zoffix, Skarsnik 14:54
camelia 42
14:58 zakharyas left 14:59 zakharyas joined, cdg joined 15:01 cdg left 15:02 cdg joined, cdg left
nine I knew Deutsche Bahn runs late quite often. Yet I'm somewhat surprised that they just wished their guests a Merry Christmas 15:02
15:02 cdg joined, cdg_ left 15:03 cdg_ joined
huf probably because of the timezone 15:03
El_Che nine: they are trolling you about perl 6 15:04
timotimo they call it "targeted advertising" 15:06
15:06 Zoffix joined
Zoffix raiph: that still just does assignment, doesn't it? 15:06
m: BEGIN my $b = 42; BEGIN my $a = $b; say $a; $b = 100; say $a
camelia 42
42
15:07 cdg left
Zoffix I was looking at that bug yesterday and it's basically copying the symbols into a fake block and compiles there, so any bindings get lots in that fake block and that's why if you bind $a would end up a Mu or whatever 15:07
s/lots/lost/;
m: BEGIN my $b = 42; BEGIN my ($a) = ($b); say $a; $b = 100; say $a
camelia 42
42
15:07 evalable6 left 15:08 evalable6 joined, ChanServ sets mode: +v evalable6
Zoffix zeddy__k: BTW, there's a bunch of resources you might find helpful listed on our Resources page: perl6.org/resources/ 15:09
zeddy__k Zoffix: thanks, I'll check those out too 15:10
jnthn Zoffix: Yeah. Lexpads are immutable, and when we compile a BEGIN we obviously haven't finished the outer block yet, so we have to fake something up. But what? Containers are cloned from a "prototype", and the fake lexpad contains the static container. Thus what's actually happening is that on entry to the scope post-compilation, the Scalar is cloned complete with the value set in the prototype. 15:11
15:11 rindolf left
jnthn Of course, binding doesn't have that level of indirection so there's no way it can work. 15:12
We should perhaps detect it at compile time and say it can't work. Or...we could try diffing the scope after each BEGIN block and trying to somehow propagate bindings.
Zoffix Don't we have ::= compile-time binding op specced? Is there also no way it can work? 15:13
jnthn I don't really get why you'd write BEGIN $foo := blah
Just write my constant $blah = ...
Since constants are evaluated at BEGIN time
And bind
15:14 wamba joined
jnthn bbi10 15:14
Zoffix Well, at least one reason is you can rebind to non-constant
m: my $blah := rand; say $blah := 42 15:15
camelia 42
Zoffix m: my constant $blah = rand; say $blah := 42
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use bind operator with this left-hand side
at <tmp>:1
------> 3y constant $blah = rand; say $blah := 427⏏5<EOL>
Zoffix
.oO( if it works with constants why can't it work with non-constants :S )
15:17
the begin-time-binding I mean
nine csv-ip5xs.pl now processes 1 million rows in 26.4 seconds on my laptop and is only 13.7x slower than Perl 5.
Zoffix This was the original ticket RT#123776 though it doesn't show any must-have usecases 15:18
synopsebot RT#123776 [open]: rt.perl.org/Ticket/Display.html?id=123776 Binding a variable at BEGIN time doesn't stick aruond for runtime
15:18 hoelzro left 15:20 skids joined
Zoffix Oh "infix:<::=>, bind and make readonly" unsure why I thought it was compile-time bind op 15:21
15:24 hoelzro joined 15:25 raschipi_ joined, raschipi left
Zoffix Ah, 'cause we eval and assign the value; whereas BEGIN my $... is like assigning in the middle of it 15:28
15:28 Zoffix left 15:31 pmurias joined 15:36 rindolf joined 15:39 rindolf left
nine Another one! 15:44
At ~4s I said there's no more low hanging fruit. Now I'm at 2.874s :D 15:45
15:47 wamba left
mspo nine: keep drinking that coffee 15:51
15:53 eliasr left, natrys joined
Kaiepi m: Any.skip(*-1) 15:54
camelia ( no output )
Kaiepi m: say Any.skip(*-1)
camelia ((Any))
Kaiepi weird
i get Cannot resolve caller tail(Any: Int); none of these signatures match: (Any:D $: *%_) (Any:D $: $n, *%_)
15:55 Zoffix joined
Zoffix Kaiepi: your rakudo is just too old and still has a bug 15:56
Kaiepi oh
Zoffix c: cca7b90 $*PERL.compiler.version.say 15:57
committable6 Zoffix, ¦cca7b90: «Cannot find this revision (did you mean “0704970”?)»
Zoffix no, I didn't :/ 15:58
c: cca7b9040320f2304 $*PERL.compiler.version.say
committable6 Zoffix, ¦cca7b90: «Cannot find this revision (did you mean “eaf4132”?)»
Zoffix c: 8efba3a897e $*PERL.compiler.version.say 15:59
committable6 Zoffix, ¦8efba3a: «v2017.12.308.g.8.efba.3.a.89␤»
Zoffix c: 2018.01~1 $*PERL.compiler.version.say
committable6 Zoffix, ¦2018.01~1: «v2017.12.291.gc.82.a.698.bc␤»
16:00 empT joined
Zoffix That kinda sucks. It was committed into post-release branch and the version makes it seem as if the fix would be in 2018.01 release, but it ain't 16:00
16:02 cdg joined
Kaiepi which branch is that? i'm on v2017.12.282.g.66.f.1690.f.5 atm pulling from master 16:04
16:05 empT left
Zoffix Kaiepi: post-release. It was already merged to master right after 2018.01 release 16:05
Fix went in on Jan 23rd: github.com/rakudo/rakudo/commit/8e...8738bf39c2 16:06
16:06 cdg_ left
Zoffix Or committed rather. I've no idea when it landed on master 16:06
16:06 cdg left
jkramer I should check my github notifications more often. :# Good news everyone, all pull requests for Text::Wrap from Aug 2017 have been merged. ;) 16:08
16:09 rindolf joined
Kaiepi oh, i was on the wrong branch on rakudo 16:10
16:10 cdg joined 16:11 cdg_ joined 16:15 cdg left 16:19 lowbro left
buggable New CPAN upload: Inline-Perl5-0.31.tar.gz by NINE cpan.metacpan.org/authors/id/N/NI/....31.tar.gz 16:22
16:23 araraloren left
nine Ok, closing in on Bruxelles. Time to stop having fun and....start having other fun :D 16:25
Zoffix :) 16:26
16:26 traxex2 left 16:27 traxex2 joined 16:28 raiph left 16:30 Herby_ joined 16:34 Sgeo_ joined
mspo FOSDEM? 16:35
Zoffix man, swapping $iteration-buffer.push(...) to nqp::push($iteration-buffer, ...) makes Str..words 2.29x faster 16:36
16:36 Sgeo left
Zoffix
.oO( would .push-all always push to an IterationBuffer tho.. )
16:37
jnthn Not always
Arrays have some ReificiationTarget or some such that creates the Scalar containers iirc 16:38
teatime is there any quick/easy way to ask how much (even if approx.) memory is allocated for / used by, some given variable/value/object / abstract data structure made up of various nested default types ? 16:41
actually… hold that thought, I'll brb (sorry.) 16:42
16:43 teatime left
Zoffix m: use nqp; my $t := nqp::getattr((my @a = 1..*), List, q|$!todo|); nqp::push($t.^attributes.tail.get_value($t), 42) 16:45
camelia This type (Array::ArrayReificationTarget) does not support positional operations
in block <unit> at <tmp> line 1
Zoffix too bad then
jnthn Yup, that's one we'll have to fix by making spesh do a better job 16:46
16:46 AlexDaniel joined 16:49 zakharyas left 16:51 zakharyas joined
lizmat Zoffix: re "man, swapping $iteration-buffer.push(...) to nqp::push($iteration-buffer, ...) makes Str..words 2.29x faster" 16:51
if that is true, than we need to have a better look at why the IterationBuffer.push is not inlined
because that was the "promise" :-) 16:52
16:52 khw joined, cschwenz left
AlexDaniel Zoffix: omg… 16:53
my mistake
didn't set up the bot properly
16:54 itaipu left
AlexDaniel to my defense, Saturday is nowhere close here :) 16:54
16:54 scimon left
Zoffix lizmat: FWIW was measuring using this (.words2 is our stock impl and .words3 is the nqp::push version): gist.github.com/zoffixznet/68247e8...7d07f1beb2 .words2 takes 6.3s on this box and .words3 2.29s 16:55
Lead to this bench from looking at stackoverflow.com/questions/256385...ow-2014-09 :) 16:56
squashable6 Webhook for perl6/roast is now active! Approachable is better than simple.
Webhook for rakudo/rakudo is now active! Keep it logically awesome. 16:57
AlexDaniel maybe rakudo webhook is an overkill but we'll see
squashable6: status
squashable6 AlexDaniel, 🍕🍕 SQUASHathon is in progress! The end of the event in 1 day and ≈19 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
AlexDaniel, Log and stats: gist.github.com/67bb35cf34c12e5abf...bdbbbe4762
AlexDaniel buggable: tag testneeded
buggable AlexDaniel, There are 31 tickets tagged with TESTNEEDED; See fail.rakudo.party/t/TESTNEEDED for details
AlexDaniel hey squashable6, what is this 1 commit you're talking about? 16:58
lizmat Zoffix: I don't see a difference between push-alls in words2 / words 3? 16:59
Zoffix AlexDaniel: someone committed to docs 1 commit
16:59 zakharyas left
AlexDaniel hmhm I see… 17:00
17:00 mcmillhj left, domidumont left, squashable6 left, squashable6 joined
AlexDaniel squashable6: stats 17:00
squashable6 AlexDaniel, I cannot recognize this command. See wiki for some examples: github.com/perl6/whateverable/wiki/Squashable
AlexDaniel squashable6: status
squashable6 AlexDaniel, 🍕🍕 SQUASHathon is in progress! The end of the event in 1 day and ≈18 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
AlexDaniel o much better!
Zoffix lizmat: oops. Updated. The difference is just $target.push is turned into nqp::push($t here gist.github.com/zoffixznet/68247e8...-p6-p6-L97 with $t being a deconted $target (deconted before the while loop) 17:01
17:03 raiph joined
squashable6 🍕 zoffixznet++ opened issue “IterationBuffer.push possibly not inlined”: github.com/rakudo/rakudo/issues/1469 17:03
🍕🍕🍕 First contribution by zoffixznet++! ♥
🍕 zoffixznet++ labeled issue “IterationBuffer.push possibly not inlined”: github.com/rakudo/rakudo/issues/1469 17:04
Zoffix ^ filed an Issue to take a closer look, so we don't forget
jnthn fwiw, --profile usually can tell you about inlining 17:05
17:06 wamba joined
Zoffix "calls inlined 10103 + 9897 (49.48%)" 17:06
for src/core/IterationBuffer.pm:20
17:06 empT joined
lizmat so it looks it does that rather late ... 17:08
Zoffix 1 sec, I think that was profile for original bench from stackoverflow
with my gisted branch .push takes 21.17% of total time and says " 17:10
calls inlined 0 + 4500000 (100.00%) "
17:10 empT left 17:11 ctilmes joined
raiph m: BEGIN constant $a = $ = 42; say $a; $a = 99; say $a # zoffix, sorry about last line. This perhaps? 17:11
camelia 42
99
ctilmes m: my uint8 $x = -5; say $x 17:12
camelia 251
ctilmes m: my uint16 $x = -5; say $x
camelia 65531
lizmat afk&
ctilmes m: my uint32 $x = -5; say $x
camelia 4294967291
ctilmes m: my uint64 $x = -5; say $x
camelia -5
Zoffix IIRC, all of those are meant to throw. Assignment throws; overflow works only if you, say $x -= 5 or whatever 17:13
ctilmes I'm actually nativecast'ing to a uint64, and was surprised to get a negative number out of it
Zoffix :) Yeah, they're busted up a bit at the moment 17:14
17:14 mcmillhj joined
Zoffix I think another bug is some of them (maybe attributes, not variables) are actually plain `int` that overflow prematurely 17:14
raiph: IIRC Skarsnik was trying to compile-time bind to a variable. 17:15
Or rather export a binded variable
17:17 Kaiepi left
Skarsnik not really compile time 17:17
17:18 Zoffix left
Skarsnik the goal is to like if you do a binding module, you want the extern to be tie to the cglobal call 17:18
17:19 mcmillhj left
raiph m: module foo { constant $a is export = $ = 42 }; import foo; say $a # skarsnik, does this seem at all helpful? 17:21
camelia 42
raiph m: module foo { constant $a is export = $ = 42 but False }; import foo; say $a.Bool 17:22
camelia False
Skarsnik no because it's not a constant :)
17:24 Kaiepi joined
raiph $a is "constant" in the sense it contains a fixed value for its entire life 17:25
er, s/contains/is bound to/ 17:26
(of course, that fixed value is a container aka indirection) 17:27
^^ skarsnik
17:29 setty1 joined 17:35 mcmillhj joined 17:37 teatime joined
squashable6 🍕🍕🍕 First contribution by AlexDaniel++! ♥ 17:37
teatime sorry; I was gone a lot longer than expected. 17:39
17:40 mcmillhj left 17:49 pmurias left, mcmillhj joined 17:50 empT joined 17:54 empT left 17:56 cdg joined 17:59 cdg_ left 18:00 ctilmes left, cdg left 18:04 cdg joined
tadzik oh ffs 18:13
I acidentally booking'd a hotel 50km from Brussels. For Fosdem
El_Che tadzik: shit. Where? Antwerp? 18:16
tadzik El_Che(IRC): Charleroi 18:17
whatever the hell that is
I've no idea why that happened
though given how obnoxious booking can be, they could as well have shoved it my face with a small "50km from your destination" label 18:18
El_Che oh fuck
tadzik I'm looking for a place now, and everything says "oh, sorry,it's sold out!"
then why are you showing me this
El_Che charleroi has a ryain-air type airport
therefor it markets itself al Brussels-South 18:19
(while Brussels-South the big train hub for thalys and eurostar)
perigrin that crap has spread to here, Orlando-Melbourne International Airport is like 60+ miles from Orlando
and we don't have the public transport infrastructure y'all have 18:20
El_Che of course no one is belgium falls for that (charleroi is a provincial town with a less than ideal reputation)
tadzik now I was in the middle of a booking and I opened the old one in another tab, now all my details are gone
screw this website :(
El_Che tadzik: I often book directly throgh accorhotels 18:21
ibis has no personality, but you know what you get
tadzik well, I was hoping for something cheap-ish and nearby 18:22
but now all hope is gone, eh
raschipi_ "personality", why would I ever want that? 18:23
El_Che raschipi_: when work pays, personality is fine 18:24
when I pay, i go for "it's clean? it has a bed?" combination
raschipi_ sounds like they are going to give me an attitude. 18:25
What if the personality ends up being gloomy? 18:26
18:31 pharv joined
El_Che tadzik: just looked at the cheapest ibis, but it's still 1 hour metro 18:33
nine tadzik: maybe you can share my room 18:34
tadzik: I think the rate was per room, so they shouldnt mind 18:35
18:35 evalable6 left
El_Che as a backup: www.accorhotels.com/nl/hotel-8602-...ccorhotels 18:35
18:35 evalable6 joined
El_Che 77€ for tomorrow 18:35
18:38 wamba left 18:39 darutoko left 18:46 epony joined 18:50 natrys left, empT joined
tadzik Nine: ah, I reserved one before I got your message :( 18:51
And it's not cancellable
18:52 raschipi_ left
El_Che heads up for Perl diner: register at the perl booth before the places are gone 18:52
18:55 empT left
nine tadzik: ah well ok, at least you have a room...in the same country 18:57
tadzik :) 19:01
Thanks for the offer though, it lifted the spirits this wacky evening 19:02
AlexDaniel squashable6: status 19:04
squashable6 AlexDaniel, 🍕🍕 SQUASHathon is in progress! The end of the event in 1 day and ≈16 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
AlexDaniel, Log and stats: gist.github.com/bd92b5f44afd9240fb...782e867583
19:04 pmurias joined
AlexDaniel buggable: tag testneeded 19:04
buggable AlexDaniel, There are 30 tickets tagged with TESTNEEDED; See fail.rakudo.party/t/TESTNEEDED for details
19:07 st_elmo joined 19:11 Cabanossi joined
Geth rakudo: 95f23a5634 | (Zoffix Znet)++ | src/Perl6/Actions.nqp
Fix crashes with compile time evalution of `where` thunks

Phixes github.com/rakudo/rakudo/issues/1465
When we compile_in_context, we rake the .ann('outer')s to find all the good bits. However, the `where` thunks don't get that annotation and so the raking stops prematurely. This causes the thunk that tries to access some core symbols (like Junction ops) executed during being time explode.
Fix by adding annotating the thunk with the current pad.
19:11
squashable6 🍕 zoffixznet++ closed issue “`where` clause in attrib…”: github.com/rakudo/rakudo/issues/1465
Geth roast: 79dff96fc9 | (Zoffix Znet)++ | S02-types/whatever.t
Cover crashes in compile-time `where` thunk evaluation

Closes github.com/rakudo/rakudo/issues/1465 Rakudo fix: github.com/rakudo/rakudo/commit/95f23a5634
19:17 preaction left
Geth DBIish: 36ca5eadac | (Moritz Lenz)++ | README.pod
Mention MariaDB in README. Closes #25
19:22
19:24 empT joined 19:25 preaction joined 19:28 Kaiepi left 19:29 empT left
Geth roast: 195227f779 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S32-io/pipe.t
Test that large blobs can be piped

Closes RT#129882. I am unable to reproduce the hang which is mentioned in the ticket, but this test *is* failing on all builds before 2017.06 with “got: '219264'”.
19:30
synopsebot RT#129882 [open]: rt.perl.org/Ticket/Display.html?id=129882 [TESTNEEDED] [CONC] [IO] Proc with `.in.close` and `.out.slurp-rest` in different threads, hangs
squashable6 🍕 AlexDaniel++ wrote a comment on commit 195227f779f7: github.com/perl6/roast/commit/1952...t-27300136 19:31
Geth roast: 72f2c3984c | (Zoffix Znet)++ | MISC/bug-coverage-stress.t
Cover serialization crashes with traits + roles

RT#127959: rt.perl.org/Ticket/Display.html?id=127959
19:34
synopsebot RT#127959 [open]: rt.perl.org/Ticket/Display.html?id=127959 [BUG] Missing serialize REPR function for REPR SCRef | When using a class using a trait that modify metamodel
19:34 empT joined 19:35 cdg left 19:38 empT left, empT joined 19:45 imcsk8 left 19:48 imcsk8 joined
squashable6 🍕 zoffixznet++ closed issue “Weird issue with `zef install`”: github.com/rakudo/rakudo/issues/1413 19:50
Geth roast: d266a4401a | (Zoffix Znet)++ | 2 files
Cover spesh regression with giant enums in packages

Closes github.com/rakudo/rakudo/issues/1413 MoarVM fix: github.com/MoarVM/MoarVM/commit/4733449165 MoarVM followup issue: github.com/MoarVM/MoarVM/issues/782
roast: 469ebbc75b | (Zoffix Znet)++ | S02-types/array-shapes.t
Test Str can be used as indices of shaped arrays

Tests github.com/rakudo/rakudo/issues/1297
19:57
squashable6 🍕 zoffixznet++ wrote a comment on “Indices for shaped array…”: github.com/rakudo/rakudo/issues/12...-362690268
🍕 zoffixznet++ unlabeled issue “Indices for shaped array…”: github.com/rakudo/rakudo/issues/1297
Geth roast: 85f55e2b23 | (Zoffix Znet)++ | S02-types/array-shapes.t
Add test description
19:58
20:03 zakharyas joined 20:04 st_elmo left
squashable6 🍕 Digicrat++ wrote a comment on “Memory leak with NativeCall”: github.com/rakudo/rakudo/issues/14...-362692017 20:04
🍕🍕🍕 First contribution by Digicrat++! ♥
20:07 zakharyas left 20:08 zakharyas joined 20:12 dct joined 20:14 zakharyas left
Geth roast/coercers2.0: b77770dc4f | (Zoffix Znet)++ | S12-coercion/coercion-types.t
Fudge anything not already passing
20:16
20:22 mtj_ left
Geth roast: ccc4edb8ed | (Zoffix Znet)++ | S12-coercion/coercion-types.t
Start coercer spec sketch
20:23
roast: b77770dc4f | (Zoffix Znet)++ | S12-coercion/coercion-types.t
Fudge anything not already passing
roast: ee09f13914 | (Zoffix Znet)++ | S12-coercion/coercion-types.t
Add sketch of more comprehensive spec of DefiniteHOW coercers

This will likely need to be pruned before 6.d is finalized. In particular, the :U ↔ :D coercers look to be just mindless over-engineering with no proper usecase to cater to.
roast: e2dc8f0c7f | (Zoffix Znet)++ | S12-coercion/coercion-types.t
Add Issue number annotation to test

Closes github.com/rakudo/rakudo/issues/1361
squashable6 🍕 zoffixznet++ closed issue “Coercers with DefiniteHO…”: github.com/rakudo/rakudo/issues/1361
20:25 pharv left 20:26 mtj_ joined 20:32 espadrine_ joined, a3r0 left 20:37 jaush joined, dct left
jaush hello! question re. rakudo star 2018.01 - what's the ETA for the windows binary? 20:38
moritz I don't know. I think stmuk had problems with his windows machine or something? 20:40
20:41 traxex2 left 20:45 mcmillhj left 20:46 cdg joined, traxex2 joined 20:50 cdg left 20:53 zakharyas joined
Herby_ Do I need to include "use v6;" at the top of my scripts still? 20:58
20:59 mcmillhj joined 21:00 jaush left
moritz no, but it gives much better error messages if you accidentally call it with "perl" instead of "perl6" 21:02
21:03 dct joined 21:04 mcmillhj left
Herby_ ok thanks 21:06
21:18 mcmillhj joined 21:23 mcmillhj left, cdg joined 21:24 cdg left 21:25 cdg joined, Kaiepi joined 21:27 TEttinger joined 21:33 mcmillhj joined 21:37 phogg joined 21:38 mcmillhj left
AlexDaniel samcv: you here? 21:43
samcv yes
AlexDaniel I'm trying to figure out something
m: say uniname 0xAB
camelia LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
AlexDaniel m: say uniname 0xAB.chr
camelia LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
AlexDaniel ah… nevermind
I'm dumb
m: say “\x06\xAB”.encode 21:45
camelia utf8:0x<06 c2 ab>
AlexDaniel what is this c2? 21:46
21:46 mcmillhj joined
samcv it's utf8 encoded 21:47
moritz uhm, the \xAB is encoded as two bytes
in UTF-8
samcv yep
AlexDaniel ahh
moritz and the first of those is c2
AlexDaniel ok
21:50 committable6 left, committable6 joined 21:51 mcmillhj left 21:55 wamba joined 21:59 mcmillhj joined, colomon joined 22:00 skids left 22:04 mcmillhj left
colomon moritz: ping? 22:05
moritz colomon: pong 22:07
22:08 rindolf left, R0b0t1 left
colomon Perl 6 Fundamentals, page 47 top: does the line my $waitfor = $promise have some subtle point that I’m missing? it looks like $waitfor is assigned again in the next line 22:09
moritz colomon: but only conditionally, iirc
the second assignment, that is 22:10
colomon aha!
moritz++
22:10 R0b0t1 joined
moritz could have been my $waitfor = $promise ?? Promise.anyof(Promise.in($timeout), $promise !! $promise; 22:11
colomon moritz: was just thinking that would be clearer
but also perhaps more confusing to newbies
moritz but that's even harder to fit into one line, and i'd have to explain the ternary op
and when you only have 67 characters per line in code examples *and* use four spaced for indentation, space usage becomes a real issue in code examples 22:12
I probably should have wasted a few lines and done an if / else with two separate assignments to $waitfor 22:13
meh, you always know better in hindsight :-)
22:14 mcmillhj joined 22:15 cdg left
moritz wishes he had the authors available for questions when reading his physics textbooks, back in the days :-) 22:16
22:19 mcmillhj left 22:20 pmurias left
Geth roast: a7590d6543 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S32-str/utf8-c8.t
Test malformed utf8 filenames roundtripping properly

Fixes RT#127671. Please feel free to object these tests (using similar concerns raised in the ticket). However, I still can't see how something in a subdirectory of /tmp can create a problem for any user. To me it sounds like nothing should ever touch or see these files anyway.
22:23
synopsebot RT#127671 [open]: rt.perl.org/Ticket/Display.html?id=127671 [EXOTICTEST] 「dir」 dies if weird unicode sequences are encountered (dir;)
AlexDaniel oh god… this just failed 22:24
AlexDaniel is working on it
what the 22:25
22:25 zakharyas left 22:27 GregDonald left 22:28 mcmillhj joined
colomon might owe his $job to pestering one of the authors of The NURBS Book with questions and bugfixes back in the 90s 22:29
geekosaur AlexDaniel, any program relying on filenames anywhere outside its direct control being *any* proper encoding is broke n 22:32
you get no promises whatsoever
Geth roast: 800bc0a1d9 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S32-str/utf8-c8.t
Whoops. New bug?

Previous commit¹ had a thinko and was attempting to treat a file created in the previous test as a directory. This is now fixed, but it seems like there's another “Malformed UTF-8” issue.
  ¹ – github.com/perl6/roast/commit/a759...15e38ee713
AlexDaniel geekosaur: sorry, what does it mean? 22:33
geekosaur I guess that might actually be aimed at Zoffix's comment 22:34
22:34 mcmillhj left
AlexDaniel ah, now I see what you mean 22:34
geekosaur on unix, you do not get to assume that filenames are utf8. or big5. or anything other than byte sequences.
AlexDaniel I think the concern was that if the test suite creates these files, then the user may later have problems getting rid of them. Yes, all the other tools that can't handle that are broken, but we shouldn't be causing this kind of trouble 22:35
so I am creating a file in a subdirectory of /tmp, this way it shouldn't be a problem for anything
unless some crazy software monitors all changes in /tmp and then explodes when files like this are created 22:36
geekosaur: speaking of broken software, this test revealed another bug in perl6 I think… 22:37
geekosaur but if it does that, *especially* in /tmp, all bets are off anyway.
pprograms can and will deliberately create weird filenames, because some programmers still think obscurity is a form of security 22:38
AlexDaniel I agree, but at the same time agree that maybe we shouldn't be testing the rest of the OS with our test suite :D
anyway, the test is now in 22:39
22:43 Zoffix joined
Zoffix AlexDaniel: FWIW, Test::Utils provide routines for temp files/dirs 22:44
I wish roast didn't use a billion different ways of creating temp files (half of which spam the current directory with leftovers if aborted)
AlexDaniel Zoffix: ahhh… I just copied whatever was used on top of that code
m: my $file = ("/doesnotexist/".encode ~ Buf.new(0x06, 0xAB)).decode('utf8-c8'); spurt $file, 'hello'; 22:45
camelia spurt is disallowed in restricted setting
in sub restricted at src/RESTRICTED.setting line 1
in sub spurt at src/RESTRICTED.setting line 17
in block <unit> at <tmp> line 1
AlexDaniel e: my $file = ("/doesnotexist/".encode ~ Buf.new(0x06, 0xAB)).decode('utf8-c8'); spurt $file, 'hello';
evalable6 (exit code 1) Malformed UTF-8 at line 1 col 36
in block <unit> at /tmp/5YtFoKr1zd line 1
Zoffix These ones: github.com/perl6/roast/blob/master...#L513-L532
AlexDaniel e: my $file = ("/tmp/".encode ~ Buf.new(0x06, 0xAB)).decode('utf8-c8'); spurt $file, 'hello';
evalable6
22:46 mcmillhj joined
Zoffix e: my $file = ("/doesnotexis").decode('utf8-c8'); spurt $file, 'hello'; 22:47
evalable6 (exit code 1) No such method 'decode' for invocant of type 'Str'. Did you mean 'encode'?
in block <unit> at /tmp/Kk82l80NWE line 1
Zoffix e: my $file = ("/doesnotexis".encode).decode('utf8-c8'); spurt $file, 'hello';
evalable6 (exit code 1) Can not decode a utf-8 buffer as if it were utf8-c8
in block <unit> at /tmp/gMsGtk_AwT line 1
Zoffix bah. Well, I was wondering if "malformed UTF" was actually commit from it trying to report the filename in the error message
AlexDaniel it probably is
Zoffix s/commit/comming/;
AlexDaniel 6c: my $file = ("/doesnotexist/".encode ~ Buf.new(0x06, 0xAB)).decode('utf8-c8'); spurt $file, 'hello'; 22:48
committable6 AlexDaniel, gist.github.com/7a545c8289f0002a44...e824dd73d3
AlexDaniel or maybe not :)
Zoffix :) 22:49
AlexDaniel m: my $file = ("/doesnotexist/".encode ~ Buf.new(0x50, 0x50)).decode('utf8-c8'); spurt $file, 'hello'; 22:50
camelia spurt is disallowed in restricted setting
in sub restricted at src/RESTRICTED.setting line 1
in sub spurt at src/RESTRICTED.setting line 17
in block <unit> at <tmp> line 1
AlexDaniel e: my $file = ("/doesnotexist/".encode ~ Buf.new(0x50, 0x50)).decode('utf8-c8'); spurt $file, 'hello';
evalable6 (exit code 1) Failed to open file /doesnotexist/PP: No such file or directory
in block <unit> at /tmp/Iy7xCEEB5O line 1
22:51 mcmillhj left
squashable6 🍕 AlexDaniel++ opened issue “Malformed UTF-8 error wh…”: github.com/rakudo/rakudo/issues/1470 22:52
🍕 AlexDaniel++ labeled issue “Malformed UTF-8 error wh…”: github.com/rakudo/rakudo/issues/1470
🍕 AlexDaniel++ wrote a comment on commit 800bc0a1d9a7: github.com/perl6/roast/commit/800b...t-27304766 22:53
22:54 espadrine_ left
stmuk pl6anet.org/drop/ has macOS and Windows 64 bit star binaries 22:59
delirium doesn't have stmuk :( 23:00
23:01 mcmillhj joined
AlexDaniel Zoffix: hmmm, I think directories created with make-temp-dir should be wiped in rm -rf style, or am I wrong? 23:02
23:02 Skarsnik left
AlexDaniel otherwise anything I create in that directory will prevent it from deleting it 23:02
Geth roast: 104173b332 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S32-str/utf8-c8.t
Use make-temp-dir and make-temp-file

  irclog.perlgeek.de/perl6/2018-02-02#i_15771428
23:04
23:05 epony left, epony joined
Zoffix AlexDaniel: what does it use now? I see an `rmdir ` call 23:05
AlexDaniel yeah, rmdir only removes empty directories 23:06
Zoffix oh it's a core routine
m: say &rmdir
camelia sub rmdir (| is raw) { #`(Sub|38293720) ... }
23:06 mcmillhj left
Zoffix AlexDaniel: *shrug*. I guess 23:07
Zoffix is always weary of rm -fr code due to bugs
squashable6 🍕 AlexDaniel++ opened issue “make-temp-dir should beh…”: github.com/perl6/roast/issues/384 23:08
AlexDaniel Zoffix: yeah… but here's a ticket anyway ↑
Zoffix mhm
AlexDaniel maybe we can even run the test suite and see if there are any directories left behind for that reason
Zoffix I have a few 23:09
$ ls /tmp/perl6_roast* | wc -l
3276
squashable6 🍕 AlexDaniel++ edited issue “make-temp-dir should beh…”: github.com/perl6/roast/issues/384
colomon moritz: do you know if there’s a standard idiom for sending the stdout or stderr of a Proc::Async to files? I think I can see how to do it, but it seems awfully longwinded for something I’d think would be common.
Zoffix whenever $proc.stdout { "file".IO.spurt: :append, $_ } Maybe? 23:10
AlexDaniel that's not nice 23:11
Zoffix :)
Why not?
AlexDaniel because you're slowing it down by processing the stdout in perl6 :)
there's .bind-stdout that you can call, and you give it IO::Handle
Zoffix Ahhh
AlexDaniel github.com/rakudo/rakudo/blob/593f...#L228-L253
Zoffix Don't see it in the docs 23:12
AlexDaniel yea because github.com/perl6/doc/issues/1470
Zoffix ZofBot: lazy developers! :P
ZofBot Zoffix, See wiki for some examples: github
colomon AlexDaniel++ AlexDaniel++ 23:13
exactly what I was looking for
AlexDaniel ahhahaha, I wish ZofBot included the link in full github.com/perl6/whateverable/wiki
Zoffix It was being lazy :)
AlexDaniel (for some examples of lazy developers)
Zoffix "Guessable"? 23:14
AlexDaniel I think there's was an idea of giving it some random info, like a sha hash of a commit 23:15
and it would turn it into a link
(kind of guessing which repository it is from, although it is not really guessing)
but with 212 issues open it is unlikely that I'll create a new bot in the near future :) 23:16
already spent 3 days trying to unbitrot existing ones
23:18 mcmillhj joined 23:19 setty1 left 23:20 epony left
AlexDaniel u: light bulb 23:21
unicodable6 AlexDaniel, U+1F4A1 ELECTRIC LIGHT BULB [So] (💡)
23:22 Zoffix left 23:23 mcmillhj left
lucs Going through the syntax docs, can someone explain what "Identifiers can contain colon pairs" is about? 23:24
23:24 epony joined 23:27 GregDonald joined
AlexDaniel … TIL 23:29
m: my $foo:bar<2> = 5; say $foo:bar(1+1)
camelia 5
lucs For example, what does 「my $foo.bar = 1」 get me that 「my $foo-bar = 1」 doesn't?
AlexDaniel lucs: well, one example is right there ↑ 23:31
but I don't know what would be the reason to use that
23:31 Aceeri_ joined
lucs Hmm... Yes. Weird. 23:32
23:35 mcmillhj joined 23:36 skids joined 23:40 zeddy__k left, mcmillhj left, zeddy__k joined
AlexDaniel lucs: github.com/perl6/doc/issues/1753 23:45
m: my $foo:bar<1> = 42; my $foo:bar<2> = 666; say $foo:bar(^2 .pick) 23:46
camelia 42
AlexDaniel m: my $foo:bar<1> = 42; my $foo:bar<2> = 666; say $foo:bar(^2 .pick)
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$foo:bar<0>' is not declared. Did you mean any of these?
$foo:bar<2>
$foo:bar<1>

at <tmp>:1
------> 3:bar<1> = 42; my $foo:bar<2> = 666; say 7⏏5$foo:bar(^2 .pick)
AlexDaniel m: my $foo:bar<1> = 42; my $foo:bar<2> = 666; say $foo:bar(<1 2>.pick) 23:47
camelia 42
AlexDaniel m: my $foo:bar<1> = 42; my $foo:bar<2> = 666; say $foo:bar(<1 2>.pick)
camelia 42
AlexDaniel m: my $foo:bar<1> = 42; my $foo:bar<2> = 666; say $foo:bar(<1 2>.pick)
camelia 42
AlexDaniel m: my $foo:bar<1> = 42; my $foo:bar<2> = 666; say $foo:bar(<1 2>.pick)
camelia 666
lucs AlexDaniel: Thanks 23:48
23:49 mcmillhj joined, aindilis` left, aindilis` joined 23:54 mcmillhj left 23:57 MasterDuke joined, aindilis` left