»ö« 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:01 Guest1856 left
timotimo perlpilot: would you be interested in bringing your changes to synopsebot in line with masak's latest commit that makes it use a big grammar? 00:01
00:02 vendethiel left 00:03 synopsebot6 left, synopsebot6 joined 00:09 adu joined 00:12 sjohnsen joined 00:14 kent\n left 00:15 kurahaupo joined 00:17 cpage_ left, synopsebot6 left, synopsebot6 joined 00:18 kent\n joined, kent\n left
patrickz -> off to bed 00:22
00:22 patrickz left 00:24 kent\n joined
timotimo i wonder what makes synopsebot die ... perhaps the number of processes it's allowed to spawn is still too low? 00:25
Could not spawn thread: errorcode -11
don't really know where to look for that errorcode :\
geekosaur EAGAIN? 00:26
timotimo that'd be the worst. 00:27
00:30 atweiden joined 00:36 synopsebot6 left, synopsebot6 joined 00:39 cpage_ joined 00:43 dustinm` left
dalek kudo-star-daily: e3bda91 | coke++ | log/ (9 files):
today (automated commit)
00:52
00:54 synopsebot6 left, synopsebot6 joined 00:55 dustinm` joined, kurahaupo left 00:58 isBEKaml joined 00:59 _dolmen_ left, Actualeyes joined, Actualeyes left
timotimo collect.p6c.org/ - rejoice, www.p6c.org is now being collect'd 00:59
01:00 sno left 01:05 sufrostico left 01:13 synopsebot6 left, synopsebot6 joined, wamba left 01:19 wwwbukolaycom joined
llfourn presentation I did for sydney.pm last night for anyone interested: github.com/LLFourn/p6-and-chill/bl...ill-01.org 01:20
it was fun and worked well. p5 people were quite engaged. 01:21
Hotkeys if I have a field "$.port" and want "is required" and a type constraint 01:22
do I put the constraint before or after 'is required'
llfourn Hotkeys: what kind of contraint?
Hotkeys a 'where' 01:23
where 0 <= * <= 65535
01:23 wwwbukolaycom left
llfourn Hotkeys: for a subset? 01:23
no...for a parameter?
Hotkeys it's just a constraint not in a subset
eg
has $.port where 0 <= * <= 65535 (is required)
not sure if the is required should go after the where or before it
llfourn hmm i've never done that b4 01:24
m: class A { has $.a where True is required };
camelia rakudo-moar 5d7f65: OUTPUT«5===SORRY!5===␤Two terms in a row␤at /tmp/_c2zZu7RX7:1␤------> 3class A { has $.a where True7⏏5 is required };␤ expecting any of:␤ constraint␤ infix␤ infix stopper␤ postfix␤ statement end␤…»
llfourn m: class A { has $.a is required where True };
camelia rakudo-moar 5d7f65: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at /tmp/5txN0FMLkJ:1␤ ------> 3class A { has $.a is required where 7⏏5True };␤»
llfourn m: class A { has $.a where True };
camelia rakudo-moar 5d7f65: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at /tmp/c_WgeTYGWj:1␤ ------> 3class A { has $.a where 7⏏5True };␤»
llfourn m: class A { has $.a where "i'm an idiot" };
camelia ( no output )
Hotkeys lol
llfourn m: class A { has $.a is required where "I'm an idiot" }; 01:25
camelia ( no output )
Hotkeys neat
llfourn m: class A { has $.a where "I'm an idiot" is required };
camelia rakudo-moar 5d7f65: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ZpnzcBzFYQ␤Two terms in a row␤at /tmp/ZpnzcBzFYQ:1␤------> 3class A { has $.a where "I'm an idiot"7⏏5 is required };␤ expecting any of:␤ constraint␤ infix␤ infix sto…»
Hotkeys I guess I probably could have just tested it myself
llfourn well now I get to learn something too :)
01:31 synopsebot6 left 01:32 raiph joined, synopsebot6 joined 01:34 brydoyle_ joined 01:35 brydoyle1 joined, brydoyle1 left, brydoyle_ left
timotimo llfourn: "perl 6 and chill" is a bit cringe to me :S 01:35
01:36 brydoyle joined
llfourn timotimo: heh. Oh well. I like it. 01:36
01:37 kurahaupo joined 01:39 abaugher left 01:41 kurahaupo left
timotimo i wonder what makes the average idle percentage only 67% 01:41
on www
but 16.8% is "wait" and 5.4% is system 01:42
and it's very frequent
llfourn what's this in reference to?
timotimo so, some cron job is either running on www for a surprisingly long time each time
collect.p6c.org/
01:43 isBEKaml left
llfourn looks 01:43
01:43 cdg left
timotimo there's also outgoing packets in the same pattern 01:43
llfourn it does look a bit odd 01:45
timotimo crontab -e is only visitors which runs at 00:18 in the morning 01:46
at least i think that's how to read that?
let me look again
m is 18 and h is 0, the rest is *; so that's "once a day", right?
llfourn doesn't remember how to read crontab 01:47
looks like every 5m?
timotimo seems so
llfourn it seesm to last for a while so top?
timotimo could be updatelist.pl for the ecosystem? 01:49
llfourn timotimo: well if that's running on that machine sounds like a good theory 01:50
might not be using cron
01:50 synopsebot6 left, synopsebot6 joined
timotimo hm, no, looks like froggs rsync task 01:50
for cpandatesters
.tell froggs if you look at the cpu plugin from the www host on collect.p6c.org i *think* the spikes that happen every 5 minutes are from rsync for cpandatesters; can we perhaps make that a bit smarter? 01:52
yoleaux timotimo: I'll pass your message to froggs.
timotimo i think i ought to go sleepysleep soon
01:58 colomon left 02:00 colomon joined 02:03 abaugher joined, kid51 left 02:04 colomon left 02:05 colomon joined 02:09 synopsebot6 left, brydoyle left, synopsebot6 joined 02:12 yqt left 02:21 molaf__ joined 02:24 molaf_ left 02:27 synopsebot6 left 02:28 synopsebot6 joined 02:29 raiph left 02:36 AlexDaniel joined 02:38 Herby__ joined
Herby__ Evening, everyone! 02:38
02:40 Ben_Goldberg joined 02:41 vendethiel joined
Herby__ \o 02:42
02:43 shicheng left
AlexDaniel :) 02:43
02:46 ilbot3 left, synopsebot6 left, synopsebot6 joined 02:47 ilbot3 joined 02:49 squach1 left 03:02 jack_rabbit left 03:04 noganex joined 03:05 vendethiel left, synopsebot6 left, synopsebot6 joined 03:07 noganex_ left, adu left 03:12 colomon left 03:15 colomon joined 03:16 adu joined, remmie left 03:18 shicheng joined 03:24 synopsebot6 left, synopsebot6 joined 03:27 jack_rabbit joined 03:28 addison joined 03:31 remmie joined 03:36 addison left 03:39 jack_rabbit left 03:42 synopsebot6 left, synopsebot6 joined
MadcapJake what do i do with this "Absolute tolerance must be a positive number greater than zero" error when i use «is-approx» 03:44
04:00 colomon left 04:01 synopsebot6 left, synopsebot6 joined
skids MadcapJake: Hrm. That seems to happen when you don't leave any text for the test. 04:04
04:05 colomon joined
orbus m: use Test; is-approx(2.71828, e) 04:05
camelia rakudo-moar 5d7f65: OUTPUT«Absolute tolerance must be a positive number greater than zero␤ in sub is-approx at /home/camelia/rakudo-m-inst-2/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E line 251␤ in block <unit> at /tmp/TB9A0zOVN8 line 1␤␤»
orbus m: use Test; is-approx(2.71828, e, "blah")
camelia rakudo-moar 5d7f65: OUTPUT«ok 1 - blah␤»
orbus well that's interesting
MadcapJake oh you need the message? weird
skids m: use Test; &is-approx.candidates».signature.say 04:06
camelia rakudo-moar 5d7f65: OUTPUT«((Numeric $got, Numeric $expected, $desc = { ... }) (Numeric $got, Numeric $expected, Numeric $tol, $desc = { ... }) (Numeric $got, Numeric $expected, Numeric :$rel_tol = { ... }, Numeric :$abs_tol = { ... }, :$desc = { ... }))␤»
orbus maybe it's defaulting rel_tol to a numeric 04:07
like 0
or actually I guess $tol
MadcapJake is there a way to change how approximate it is? otherwise I can't use it
orbus well based on that signature it looks like you can... 04:08
skids :abs_tol ?
or :rel_tol
MadcapJake ohh weird, that's not mentioned in language/testing
04:08 Juerd left
orbus or just tol 04:08
not sure what the differences are
skids well, rel_toll would normalize somehow. 04:09
probably $tol and :$abs_tol are just convenience synonyms. 04:10
MadcapJake sweet! that works swimmingly!
orbus m: use Test; is-approx(.35678,.34,.01)
camelia rakudo-moar 5d7f65: OUTPUT«not ok 1 - ␤␤# Failed test at /tmp/HPYFHenqpR line 1␤# expected: 0.34␤# got: 0.35678␤»
skids wonders why the dispatch does that without the $desc
orbus m: use Test; is-approx(.35678,.34,.1) 04:11
camelia rakudo-moar 5d7f65: OUTPUT«ok 1 - ␤»
orbus yeah, it's interesting
skids O I guess 3 parms + no opt does beat 2 parms + opt 04:12
04:12 Juerd joined
orbus what does the = { ... } mean in those signatures? 04:17
optional?
04:17 kent\n left 04:18 moznion left
gfldex m: my &c = { ... }; say &c.WHAT; 04:18
camelia rakudo-moar 5d7f65: OUTPUT«(Block)␤»
gfldex m: my &c = { ... }; say c();
camelia rakudo-moar 5d7f65: OUTPUT«Stub code executed␤ in block <unit> at /tmp/wJkYgk9ht7 line 1␤␤»
04:18 kent\n joined
skids optional with a default. 04:18
m: sub a ($a, $b = 4) { }; &a.signature.say 04:19
camelia rakudo-moar 5d7f65: OUTPUT«($a, $b = { ... })␤»
gfldex m: my &c = { ... }; say c(); CATCH { default { .WHAT.say } }
camelia rakudo-moar 5d7f65: OUTPUT«(StubCode)␤»
04:19 synopsebot6 left 04:20 synopsebot6 joined, eternaleye joined
gfldex m: my sub a ($a, $b = 4) { }; &a.signature.params[1].say; CATCH { default { .WHAT.say } } 04:21
camelia rakudo-moar 5d7f65: OUTPUT«$b = { ... }␤»
gfldex m: my sub a ($a, $b = 4) { }; &a.signature.params[1].WHAT.say; CATCH { default { .WHAT.say } }
camelia rakudo-moar 5d7f65: OUTPUT«(Parameter)␤»
orbus m: multi blah(Numeric $a, Numeric $b, $d) {say $d}; multi blah(Numeric $a, Numeric $b, $c, :$d=5) {say $c; say $d}; blah(1,2,3)
camelia rakudo-moar 5d7f65: OUTPUT«3␤5␤»
skids m: my sub a ($a, $b = 4) { }; &a.signature.params[1].default.WHAT.say; 04:22
camelia rakudo-moar 5d7f65: OUTPUT«(Block)␤»
skids m: my sub a ($a, $b = 4) { }; &a.signature.params[1].default().say;
camelia rakudo-moar 5d7f65: OUTPUT«-> ;; $_? is raw { #`(Block|76760864) ... }␤»
skids m: my sub a ($a, $b = 4) { }; &a.signature.params[1].default()().say;
camelia rakudo-moar 5d7f65: OUTPUT«4␤»
gfldex looks like overgeneralisation to me 04:23
likely a source for rakudoslow 04:24
skids You mean you'd prefer simple constants to appear naked?
gfldex i would prefer good introspection in that case, what would require a friendly 4 to be displayed
skids Yes actually, MMD uses the string of the signature currently, and that probably is slow.
Ben_Goldberg m: sub a ($a, $b = 4) { }; &a.signature.params[1].default.().perl.say 04:26
camelia rakudo-moar 5d7f65: OUTPUT«4␤»
04:27 Actualeyes joined
orbus m: multi blah(Numeric $a, Numeric $b, $d=7) {say $d}; multi blah(Numeric $a, Numeric $b, Numeric $c, $d=5) {say $c; say $d}; blah(1,2) 04:32
camelia rakudo-moar 5d7f65: OUTPUT«7␤»
Hotkeys does the documentation mention enums at all?
orbus yeah, I don't get why is-approx is acting that way
Hotkeys I've seen them in action but a quick search for enum gives no results
04:33 addison joined, Ben_Goldberg left
orbus design.perl6.org/S12.html#Enumerations 04:34
gfldex Hotkeys: they do "mention" enums, see first example of doc.perl6.org/type/IO::Notification
Hotkeys I suppose
I feel like they should have a page of their own
skids When the docs fail, consult the design docs: design.perl6.org/S12.html#Enumerations 04:35
gfldex they should become documented in doc.perl6.org/language/typesystem
enum is a type declarator
Hotkeys skids: thanks
gfldex there where late changes to enums. S?? may be incomplete or missleading. Read roast if you want to be sure. 04:37
04:37 addison left
skids At some point a week should be picked to "whirlpool" stuff back into the design docs. 04:38
Hotkeys heh
I like the reference here i.imgur.com/q2PD51z.png
04:38 synopsebot6 left, synopsebot6 joined 04:40 secwang joined, Zero_Dogg left 04:41 Zero_Dogg joined 04:45 Herby__ left 04:56 jack_rabbit joined 04:57 synopsebot6 left, synopsebot6 joined, sno joined 04:59 skids left 05:00 revhippie left 05:04 secwang left 05:08 cpage_ left
sortiz . 05:08
05:15 roguelazer left, synopsebot6 left 05:16 synopsebot6 joined 05:17 ruoso_ left, lnrdo left 05:20 Kitt3n is now known as Redfoxmoon 05:23 lnrdo joined 05:24 roguelazer joined, ruoso joined 05:28 cpage_ joined 05:34 synopsebot6 left, synopsebot6 joined 05:39 Cabanossi left 05:41 Cabanossi joined 05:53 synopsebot6 left, synopsebot6 joined 05:54 khw left 05:58 lnrdo left, davido joined 05:59 roguelazer left, ruoso left 06:02 jack_rabbit left 06:03 lnrdo joined 06:04 roguelazer joined 06:05 cpage_ left 06:06 ruoso joined 06:12 synopsebot6 left, synopsebot6 joined 06:15 adu left 06:24 addison joined 06:28 addison left 06:29 sno left, sno joined 06:30 synopsebot6 left, synopsebot6 joined 06:34 freeze left 06:35 autarch left 06:48 eddie2pc left 06:49 synopsebot6 left, synopsebot6 joined 06:51 geraud left, cpage_ joined 06:52 japhb left 06:54 japhb joined 06:59 garyaj joined 07:00 garyaj left, davido left, CIAvash joined 07:04 freeze joined 07:06 autarch joined 07:07 synopsebot6 left 07:08 synopsebot6 joined 07:09 atweiden left 07:16 autarch left 07:19 sno left, autarch joined 07:23 FROGGS joined 07:26 synopsebot6 left, synopsebot6 joined 07:27 vendethiel joined
FROGGS .tell timotimo how so? 07:28
yoleaux 01:52Z <timotimo> FROGGS: if you look at the cpu plugin from the www host on collect.p6c.org i *think* the spikes that happen every 5 minutes are from rsync for cpandatesters; can we perhaps make that a bit smarter?
FROGGS: I'll pass your message to timotimo.
07:36 kent\n left 07:37 _mg_ joined, kent\n joined
[Tux] test 22.463 07:38
test-t 12.043
csv-parser 51.560
07:38 firstdayonthejob joined
[Tux] say I want to count all characters "a" and "b" in a string and get a hash with the counts of each. What is the most perl6'ish way to do that? 07:45
07:45 synopsebot6 left, synopsebot6 joined
nine classify comes to mind. Also a Hash that just counts how often a key was added exists: doc.perl6.org/type/Bag 07:46
FROGGS m: say 'say I want to count all characters "a" and "b"'.comb.Bag<a b> 07:47
camelia rakudo-moar 5d7f65: OUTPUT«(7 1)␤»
nine There's power in coercers 07:48
[Tux] FROGGS++
07:51 vendethiel left
[Tux] Than this is a timy bit counterinituative: 07:51
m: my@x=<a b>;say "How many characters does this bag have?".comb.Bag(@x)
camelia rakudo-moar 5d7f65: OUTPUT«Too many positionals passed; expected 1 argument but got 2␤ in block <unit> at /tmp/Ne1pqxS3Rk line 1␤␤»
MadcapJake how would you modify a class' method? Will a role's methods override? Is there another way? 07:52
nine m: my@x=<a b>;say "How many characters does this bag have?".comb.Bag($@x)
camelia rakudo-moar 5d7f65: OUTPUT«Too many positionals passed; expected 1 argument but got 2␤ in block <unit> at /tmp/qoPDhppQkI line 1␤␤»
nine huh?
[Tux] indeed, I was guessing the one-arg rule would apply
nine oh...of course, Bag doesn't have arguments
it _returns_ a Bag which is associative
[Tux] ahhhhhh 07:53
nine m: my@x=<a b>;say "How many characters does this bag have?".comb.Bag{@x}
camelia rakudo-moar 5d7f65: OUTPUT«(5 1)␤»
nine is now quietly waiting for the coffee to kick in
[Tux] sooooooooo nice :)
MadcapJake does «add_method» overwrite methods with the same name? 07:54
07:54 darutoko joined, Ven joined
FROGGS MadcapJake: no, you'll get an error 07:54
MadcapJake is there a way to add a method of a class outside of the class' body?
FROGGS MadcapJake: I think you can .^mixin a role containing said method
MadcapJake and it will overwrite a method inside the class? 07:55
FROGGS yes, that's our slangs currently work
how our*
I mean, it kinda is a hack, but it works
moritz m: say (42 but role { method sqrt() { 12 } }).sqrt
camelia rakudo-moar 5d7f65: OUTPUT«12␤»
07:56 bioexpress joined
MadcapJake is there any way to replace it in-place? 07:56
07:58 Ven_ joined 07:59 ely-se joined, vendethiel joined 08:00 kd` left
[Tux] sorry for being slow, but this way I only get the counts. The "ideal" result in my case would be a Bag that *only* holds the characters in @x 08:00
08:02 Ven left 08:03 synopsebot6 left 08:04 synopsebot6 joined, DrPete left
bioexpress Hello! With Perl 5 I can write `use Module::Name "function";` even if "function" is exported automatically. 08:05
This way I can see in my code immediately where the function comes from.
Why has this possibility been removed in Perl 6?
Ven_ it hasn't
m: use Test <is>; is 1, 3;
camelia rakudo-moar 5d7f65: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3VBGRdh9Vt␤Error while importing from 'Test':␤no EXPORT sub, but you provided positional argument in the 'use' statement␤at /tmp/3VBGRdh9Vt:1␤------> 3use Test <is>7⏏5; is 1, 3;␤»
hippie m: my @x = <a b>; my %y; %y{@x} = 'this that and the other, balloons and bananas'.comb.Bag{@x}; say %y # Tux?
camelia rakudo-moar 5d7f65: OUTPUT«a => 7, b => 2␤»
08:05 sno joined
Ven_ mej 08:05
FROGGS m: my@x=<a b>;say "How many characters does this bag have?".comb.Bag{@x}:kv 08:06
camelia rakudo-moar 5d7f65: OUTPUT«(a 5 b 1)␤»
[Tux] :kv of course
FROGGS m: my@x=<a b>;say "How many characters does this bag have?".comb.Bag{@x}:kv.hash
camelia rakudo-moar 5d7f65: OUTPUT«a => 5, b => 1␤»
[Tux] did too much perl5 lately
FROGGS :o)
08:09 DrPete joined, kd` joined 08:10 LGD_ left, rindolf joined 08:11 moritz left, ilbot3 left
[Tux] somehow expected «say %hash.keys» to be shortcutted to «say %hash:k» :P 08:12
08:12 ilbot3 joined
Ven_ that'd be an adverb on say 08:13
08:14 sjoshi joined 08:16 moritz joined 08:17 abraxxa joined
moritz PSA: due to the glibc security bug, I'll have to reboot hack and its companions Very Soon[tm] 08:18
(unless somebody knows a way to ensure the old glibc isn't kept in memory anymore)
08:19 rindolf left, wamba joined
jast kill all processes, Problem Solved (tm) 08:21
08:21 vendethiel left 08:22 synopsebot6 left, synopsebot6 joined 08:23 Laurent_R joined 08:25 addison_ joined
[Tux] 73 lines of perl5 compress to 18 lines of perl6 08:26
not completely fair, as perl6 does not need to deal with BOM's, but still
08:29 addison_ left
cosimo moritz: REBOOT ALL THE THINGS 08:30
08:30 zakharyas joined
moritz jast: heh, you here. I'm having #git feelings right now :-) 08:30
08:31 addison joined 08:32 Laurent_R left 08:33 xinming left 08:34 xinming_ joined 08:39 firstdayonthejob left 08:41 synopsebot6 left, synopsebot6 joined, vendethiel joined 08:42 addison left
DrForr There are editors out there that set us up the BOM on UTF-8 files though. 08:42
moritz but doesn't Perl 6 handle those automatically? 08:43
FROGGS it does 08:44
moritz so it's completely fair to include that difference 08:45
allright, I'll reboot the hypervisor and all the VMs (hack, www) now
08:45:55 up 435 days, 20:03, 2 users, load average: 1.45, 0.94, 0.84 08:46
I do feel a bit sorry about ending that update
*uptime
08:46 Quom left, PerlJam left, sergot left, avuserow left, masak left, JimmyZ left, psch_ left, Util left, [Coke]_ left, synopsebot6 left, dalek left
[Tux] m: 'class C { method foo (Str $s, Array @a = < a b >; Bool $flag = False) { 1; }}; say C.new.foo("a") 08:47
camelia rakudo-moar 5d7f65: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xv4FzbpvE3␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/xv4FzbpvE3:1␤------> 3lag = False) { 1; }}; say C.new.foo("a")7⏏5<EOL>␤ expecting any of:␤ sing…»
[Tux] m: class C { method foo (Str $s, Array @a = < a b >; Bool $flag = False) { 1; }}; say C.new.foo("a")
camelia rakudo-moar 5d7f65: OUTPUT«Type check failed in binding @a; expected Positional[Array] but got List␤ in method foo at /tmp/iMjGE4JxLL line 1␤ in block <unit> at /tmp/iMjGE4JxLL line 1␤␤»
[Tux] s/;/, 08:48
m: class C { method foo (Array @a = < a b >) { 1; }}; say C.new.foo() 08:50
camelia rakudo-moar 5d7f65: OUTPUT«Type check failed in binding @a; expected Positional[Array] but got List␤ in method foo at /tmp/30XnIDTKfU line 1␤ in block <unit> at /tmp/30XnIDTKfU line 1␤␤»
[Tux] m: class C { method foo (Array @a = [< a b >]) { 1; }}; say C.new.foo()
camelia rakudo-moar 5d7f65: OUTPUT«Type check failed in binding @a; expected Positional[Array] but got Array␤ in method foo at /tmp/us1ZPtbb1s line 1␤ in block <unit> at /tmp/us1ZPtbb1s line 1␤␤»
moritz eeks, the hypervisor isn't coming up again 08:51
[Tux] m: class C { method foo (Array $a = [< a b >]) { 1; }}; say C.new.foo()
camelia rakudo-moar 5d7f65: OUTPUT«1␤»
moritz I'll have to trod over to the data center later on :/
jast moritz: "#git feelings" sounds kind of ominous 08:58
and it does seem to have killed your hypervisor. sorry. :( 08:59
08:59 Actualeyes left
MadcapJake i think the p6c server is down 09:04
ahh i see, nevermind me :P 09:05
09:23 dalek joined, ChanServ sets mode: +v dalek
[Tux] m: class C { method foo (Str $s, Str $fold = "lc") { say $s; say $fold }};C.new.foo("x");C.new.foo("x",fold => "x") 09:25
camelia rakudo-moar 5d7f65: OUTPUT«x␤lc␤x␤lc␤»
09:25 vendethiel left
[Tux] so, why is $fold "lc" and not "x" on the second invocation? 09:26
ah, : missing 09:27
FROGGS [Tux]: declare it as a named
aye
09:27 azawawi joined
azawawi hi 09:27
is doc.perl6.org working or not?
i cant seem to access it
DrForr Hypervisor problem apparently. 09:28
09:28 ocbtec joined
azawawi i see 09:28
DrForr: hi :)
09:28 [Sno] joined 09:30 sno left
DrForr waves. 09:30
azawawi raw.githubusercontent.com/DanBrook...-icons.png # Please let me know your feedback for a suitable perl6 icon 09:34
09:34 sjoshi left, hanekomu left
moritz hack is back up 09:34
... and www too 09:35
I don't know what happend to the hypervisor; the first thing I did when I arrived was setting the reset button
and by the time I had a console wired up, it was running nicely
09:36 MilkmanDan left
azawawi cool 09:36
moritz++
moritz on my workstation at home I have a bug that a 'reboot' does the same as 'halt' (that is, halting the OS without powering down the hardware -- whatever that's supposed to be good for)
09:36 sjoshi joined
moritz maybe it's the same on that server 09:36
I guess I never rebooted it before :-)
FROGGS azawawi: camelia is problematic for that icon size? 09:37
09:37 ocbtec left 09:38 ocbtec joined
stmuk rebooting -- the MSCE fix ;) 09:38
09:38 broquaint left
azawawi FROGGS: yup 09:38
FROGGS: too much detail
09:39 addison joined
azawawi FROGGS: pasteboard.co/1uqPo9c8.png 09:39
jast why do none of these stupid sites work without javascript 09:40
[Tux] All tests successful.
Files=28, Tests=22307, 29 wallclock secs ( 2.92 usr 0.18 sys + 82.35 cusr 1.66 csys = 87.11 CPU)
Result: PASS
Text::CSV_XS.header now ported to p6' Text::CSV 09:41
09:41 sergot joined
FROGGS azawawi: a butterfly (rotated like the original) might still work... we don't need the P and 6 in the wings... 09:41
azawawi FROGGS: will try an outline then 09:42
09:42 MilkmanDan joined
azawawi now the next question what icon color represents camelia? :) 09:43
09:43 addison left
DrForr Bikeshed brown. 09:43
jast anything bright and friendly will do, I guess 09:44
azawawi thanks for the feedback 09:45
azawawi starts working on it
09:46 azawawi left 09:53 inokenty left, zhmylove left, SHODAN left, brabo left, Exodist left, nebuchadnezzar left, orbus left, ugexe left, bitmap left, SmokeMachine____ left, kshannon_ left, peteretep left, sQuEE left, domm_ left, Cheery left, Peter_WR left, Amnez777 left, Hotkeys left, geekosaur left, saaki left, edenc left, hoelzro left, Ulti left, Grrrr left, krakan left, jnap left, ggherdov_ left, flussence left, Lucas_One_ left, jast left, Bucciarati left, timotimo left, gfldex left, [ptc] left, dylanwh left, rafl left, decent_ left, bartolin left, luis left, corbyhaas_ left, damnlie left, avalenn left, PotatoGim left, jcallen left, b^_^d left, sunnavy left, rjbs left, huf left, sjn left, BinGOs left, gabiruh left, hoelzro joined, flussence joined, d^_^b joined, d^_^b left, d^_^b joined, rjbs joined, sjn joined, domm_ joined, Cheery joined, Hotkeys joined, gabiruh joined, dylanwh joined, timotimo joined, BinGOs joined, bitmap joined, SHODAN joined, nebuchadnezzar joined, zhmylove joined, Amnez777 joined, gfldex joined, jcallen joined, sunnavy joined, decent joined, huf joined, Bucciarati joined, saaki joined, [ptc] joined, bartolin joined, Grrrr joined, ugexe joined, Peter_R joined, krakan joined, inokenty joined, jast joined, rafl joined, geekosaur joined, edenc joined, kshannon joined, sQuEE joined, luis joined, Exodist joined 09:54 damnlie joined, avalenn joined, Ulti joined 09:55 aindilis` left, orbus joined 10:00 PotatoGim joined, espadrine joined 10:02 ggherdov_ joined 10:03 SmokeMachine____ joined, peteretep joined, espadrine left, avalenn left, damnlie left, rafl left, hoelzro left, [ptc] left, Peter_R left, flussence left, ocbtec left, xinming_ left, ilbot3 left, _mg_ left, ruoso left, AlexDaniel left, abaugher left, dustinm` left, sjohnsen left, robinsmidsrod left, hoelzro joined, ruoso joined, flussence joined, sjohnsen joined, AlexDaniel joined, iH2O joined, ocbtec joined, damnlie joined, abaugher joined 10:04 iH2O left, ilbot3 joined, avalenn joined 10:05 _mg_ joined, rafl joined, robinsmidsrod joined, [ptc] joined, Peter_R joined, dustinm` joined 10:06 Lucas_One_ joined 10:08 _mg_ left, ocbtec left, sjoshi left, wamba left, DrPete left, bioexpress left, colomon left, molaf__ left, Psyche^ left, Timbus left, yurivish left, tinita left, pecastro left, luiz_lha left, frew left, hahainternet left, Celelibi left 10:09 tinita joined, pecastro joined, Psyche^ joined, luiz_lha joined, molaf__ joined, hahainternet joined, Celelibi joined, wamba joined, Timbus joined, yurivish joined, sjoshi joined, DrPete joined, colomon joined, ocbtec joined, luiz_lha is now known as Guest18334, xinming joined 10:10 RabidGravy joined 10:11 frew joined, _mg_ joined 10:12 Guest18334 is now known as luiz_lha 10:13 corbyhaas_ joined, TEttinger left, jnap joined
RabidGravy MARNING 10:13
sortiz \o RabidGravy 10:14
10:24 dakkar_ joined 10:25 azawawi joined
azawawi modules.perl6.org/ # 503 error 10:26
moritz gaaaah, we *still* have no service file for starting that mojo app :( 10:27
10:28 dakkar_ left 10:29 kurahaupo joined
RabidGravy is anyone looking at the e.g. github.com/perl6/gtk-simple/issues/23 ? (summary something changed in require and broke panda) 10:31
10:31 espadrine joined 10:32 bioexpress joined, Ven_ left 10:33 kurahaupo_ joined 10:34 kurahaupo` joined
azawawi any chance we could add line number information to the module-not-found message "Could not find Foo::Bar in: <back-trace>"? 10:34
10:34 viralbus joined
azawawi RabidGravy: our travis CI testing methodology is flawed btw 10:35
RabidGravy: and hi... how are you doing? :)
RabidGravy I'm fabulous!
azawawi RabidGravy: we test `prove -ve t` but not `panda install .` 10:36
10:36 kurahaupo left
azawawi RabidGravy: hence META.info can be wrong, deps can wrong, bad resources, ...etc 10:36
10:37 kurahaupo_ left
RabidGravy I've got at least one module that *does* do that 10:38
azawawi which one? 10:40
moritz: any chance we could add line number information to the module-not-found message "Could not find Foo::Bar in: <back-trace>"?
10:40 polyfloyd left, polyfloyd joined
azawawi moritz: right now when an error occurs in atom editor / perl 6 tools plugin, it is always on line #1... since there is no line number 10:40
10:41 sjoshi left, araujo joined, araujo left, araujo joined
viralbus Hi there! I'm new to Perl6 (but I've used Perl since Perl 4 days). I have a question regarding Unicode strings and regexes: If I have a string defined like this: my $x = "a\c[COMBINING ACUTE ACCENT]" and I want to replace the acute accent with another one, the following doesn't work: $x ~~ s/\c[COMBINING ACUTE ACCENT]/\c[COMBINING DOT ABOVE]/; 10:42
El_Che do I understand correctly that panda will create .precomp files? I am putting a perl6 app in docker on a disposable container (will be reactreated each time it runs)
10:42 araujo left 10:43 araujo joined, araujo left, araujo joined, ilmari_ is now known as ilmari 10:44 araujo left
viralbus I presume that's because the character and the accent have been combined into one, but how to I run a regex on the .NFD form? $x.NFD ~~ s/........ doesn't seem to work, either. 10:44
azawawi El_Che: my understanding is that the rakudo perl6 process creates those folders 10:45
10:45 dakkar joined
RabidGravy yeah, it gets created in the repo that the module was found when the module is loaded 10:45
10:46 kurahaupo` left 10:49 Skarsnik joined, yurivish left, pecastro left, flussence left, SmokeMachine____ left, huf left, Amnez777 left, gfldex left, sergot left, dalek left, Cabanossi left, mrsolo left, mprelude_ left, eternaleye left, ELBeavers left, gypsydave5 left, johan left, timrs2991 left, daxim left, ggoebel16 left, dsp- left, riatre left, pnu left, a3r0 left, bhm left, solarbunny left, huggable left, arnsholt left, cpage left, rudi_s_ left, mtj_ left, cosimo left, Jonis_ left, boegel left, konobi left, mephinet left, mst left, mre left, tony-o_ left, nemo left, yeltzooo9 left, squain_ left, andrewalker left, hobbs left, mspo left, krunen left, bhm joined 10:51 pecastro joined, rudi_s joined, johan joined, a3r0 joined, ELBeavers joined, Amnez777 joined, Jonis joined, sergot joined, dsp- joined, yurivish joined, ggoebel16 joined, mprelude_ joined, yeltzooo joined, konobi joined, nemo joined, arnsholt joined, M-eternaleye joined, mspo joined, nemo is now known as Guest75443, konobi is now known as Guest80400, flussence joined, hobbs joined, hobbs left, hobbs joined, boegel joined, Cabanossi joined, jast left, jargan joined, daxim joined, mtj_ joined, timrs2991 joined, gypsydave5 joined 10:52 riatre joined, sjohnsen left, masak joined, andrewalker joined, cpage joined, dalek joined, ChanServ sets mode: +v dalek, squain joined, krunen joined, mst joined, huf joined, mre joined, AlexDaniel left, sjoshi joined, azawawi left 10:54 yoleaux left, cosimo joined, araujo joined 10:55 yoleaux joined, ChanServ sets mode: +v yoleaux 10:56 pnu joined, apiw joined, gfldex joined 10:57 mephinet joined, solarbunny joined 11:01 SmokeMachine____ joined 11:02 apiw left, sjohnsen joined, kid51 joined 11:04 mephinet left, mst left, riatre left, yurivish left, Jonis left, a3r0 left, ELBeavers left, jnap left, frew left, ocbtec left, wamba left, Psyche^ left, PotatoGim left, ugexe left, jcallen left, zhmylove left, timotimo left, BinGOs left, gabiruh left, luis left, sjn left, d^_^b left, kent\n left, FROGGS left, cpage_ left, lnrdo left, Juerd left, remmie left, avenj left, olinkl left, clkao left, mohae left, gensym left, Amendil left, TeamBlast left, mithaldu_ left, jevin_ left, lizmat left, skarn left, jferrero left, hacst left, mathw left, lucs left, Upasaka left, diakopter left, dindinx left, cfloare left, smash left, stmuk left, dg left, rdleon left, sjn joined, lizmat joined, lnrdo joined, ELBeavers joined
viralbus I can't help thinking that the proper way to do this ought to be something like $x ~~ s:nfd/\c[COMBINING ACUTE ACCENT]/\c[COMBINING DOT ABOVE]/ but when I tried that, I got "Adverb nfd not allowed on substitution.". :-( 11:04
11:04 smash joined, BinGOs joined, avenj joined 11:05 avenj left, avenj joined, gabiruh joined, jferrero joined, Jonis joined, timotimo joined, lucs joined, zhmylove joined, a3r0 joined, ocbtec joined, mst joined, rdleon joined, jcallen joined, luis joined, yurivish joined, FROGGS joined, d^_^b joined, d^_^b left, d^_^b joined, dindinx joined, stmuk joined, gensym joined, diakopter joined, ugexe joined, Upasaka joined, frew joined, wamba joined, dindinx left, dindinx joined 11:06 Amendil joined, kent\n joined, hacst joined, cpage_ joined, TeamBlast joined, mohae joined, Psyche^ joined, riatre joined, jevin joined, mrsolo joined, Juerd joined, jferrero left, jferrero joined, remmie joined 11:07 Exodist left, dg joined, baest left, mindos left, baest joined 11:09 Exodist joined, cfloare joined, mathw joined, mephinet joined 11:10 mls left, mls joined 11:12 caasih left, cibs left, shicheng left 11:13 mithaldu_ joined, skarn joined, olinkl joined 11:14 vendethiel joined
Skarsnik hm, you can't new a parameter type? my Pointer[mxml_node_t] $child = Pointer[mxml_node_t].new($i); fail with Type check failed in assignment to $child; expected NativeCall::Types::Pointer[MiniXML::Raw::mxml_node_t] but got NativeCall::Types::Pointer 11:15
I tried with .= new it does not work etheir
11:15 mindos joined
arnsholt It's an issue with how the parameterized types are created in NativeCall 11:16
I've worked on fixing it, but haven't had time to complete it
jnthn arnsholt: Using 6pe? 11:17
11:17 clkao joined
jnthn (6model parametric extensions) 11:17
11:17 ocbtec left
Skarsnik damn 11:17
11:18 ocbtec joined, jnap joined 11:19 bioexpress left, PotatoGim joined 11:21 caasih joined 11:23 CIAvash left 11:24 viralbus left 11:25 viralbus joined, araujo left 11:26 araujo joined
RabidGravy I just can't replicate the way that panda is failing with the redefinition of 'Build' 11:27
11:28 araujo left 11:29 araujo joined, telex left
sortiz Skarsnik, I working on fixing DBIish, now passing tests. \o/ 11:29
*I'm 11:30
11:30 telex joined
viralbus So to rephrase my question: To replace a Unicode modifier in a string, what's the best alternative to $x ~~ s:nfd/\c[COMBINING ACUTE ACCENT]/\c[COMBINING DOT ABOVE]/ ? Also, is the :nfd adverb going to be implemented at some point (I saw it mentioned on a couple of web pages, but I'm not sure they were authoritative)? 11:33
jnthn viralbus: We plan to support regexes at levels other than graphemes eventually 11:36
(In some future Perl 6 version)
11:37 vendethiel left
jnthn Someone else may have a better idea, but the first thing that comes to mind is to do something with .NFD.list.map(...) and the map will map the combining chars as needed 11:38
m: samemark 11:39
camelia rakudo-moar 5d7f65: OUTPUT«5===SORRY!5=== Error while compiling /tmp/y9B4GXNLRe␤Calling samemark() will never work with any of these multi signatures:␤ ($s, $pat)␤at /tmp/y9B4GXNLRe:1␤------> 3<BOL>7⏏5samemark␤»
jnthn aha
I think samemark is also useful for this kind of thing
11:39 addison_ joined
moritz iirc samemark replaces the base character, not the mark 11:39
11:41 ilogger2 joined, ChanServ sets mode: +v ilogger2
viralbus jnthn: Thanks, that's useful! 11:41
11:41 bioexpress joined 11:42 cognominal joined 11:44 lokien joined 11:45 skaji joined
lokien hey guys, can you help me with some text parsing? 11:45
11:45 Ulti joined
DrForr Good question. What's the text? In a pastebin, if you please. 11:45
11:45 gypsydave5 joined
lokien pastebin.com/kS96ZtVC 11:46
I need only packages names, without commas and things in parentheses
moritz lokien: seems straight forward to me. What have you tried so far? 11:48
jnthn m: say 'qml-module-org-kde-kio:amd64 (5.15.0-0ubuntu1, automatic), kde-telepathy-minimal:amd64 (15.04.20ubuntu1, automatic), liboxygenstyle5-5:amd64 (5.4.2-0ubuntu1, automatic)'.comb: /<[\w-]>+ )> ':'\w+ ' ('/
camelia rakudo-moar 5d7f65: OUTPUT«(qml-module-org-kde-kio kde-telepathy-minimal liboxygenstyle5-5)␤»
jnthn hah, got it in one :P
lokien nothing, I'm a noob :^(
jnthn
.oO( why isn't the rest of my code going like that today... )
11:49
moritz m: say 'qml-module-org-kde-kio:amd64 (5.15.0-0ubuntu1, automatic), kde-telepathy-minimal:amd64 (15.04.20ubuntu1, automatic), liboxygenstyle5-5:amd64 (5.4.2-0ubuntu1, automatic), k3b-data:amd64 (2.0.3-0ubuntu3, automatic), kimageformat-plugins:amd64 (5.15.0-0ubuntu1)'.split(/\,\s+).map({ .split(':')[0]})
camelia rakudo-moar 5d7f65: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_Ez76R42C6␤Unable to parse regex; couldn't find final '/'␤at /tmp/_Ez76R42C6:1␤------> 3ns:amd64 (5.15.0-0ubuntu1)'.split(/\,\s+7⏏5).map({ .split(':')[0]})␤ expecting any of:␤ argument…»
moritz m: say 'qml-module-org-kde-kio:amd64 (5.15.0-0ubuntu1, automatic), kde-telepathy-minimal:amd64 (15.04.20ubuntu1, automatic), liboxygenstyle5-5:amd64 (5.4.2-0ubuntu1, automatic), k3b-data:amd64 (2.0.3-0ubuntu3, automatic), kimageformat-plugins:amd64 (5.15.0-0ubuntu1)'.split(/\,\s+/).map({ .split(':')[0]})
camelia rakudo-moar 5d7f65: OUTPUT«(qml-module-org-kde-kio automatic) kde-telepathy-minimal automatic) liboxygenstyle5-5 automatic) k3b-data automatic) kimageformat-plugins)␤»
moritz m: say flat 'qml-module-org-kde-kio:amd64 (5.15.0-0ubuntu1, automatic), kde-telepathy-minimal:amd64 (15.04.20ubuntu1, automatic), liboxygenstyle5-5:amd64 (5.4.2-0ubuntu1, automatic), k3b-data:amd64 (2.0.3-0ubuntu3, automatic), kimageformat-plugins:amd64 (5.15.0-0ubuntu1)'.split(/\,\s+/).map({ .split(':')[0]})
camelia rakudo-moar 5d7f65: OUTPUT«(qml-module-org-kde-kio automatic) kde-telepathy-minimal automatic) liboxygenstyle5-5 automatic) k3b-data automatic) kimageformat-plugins)␤»
moritz ah no, doesn't work that easily 11:50
jnthn :)
11:50 Ulti left
jnthn Yeah, that's why I reached for .comb...felt easier to say what I did want 11:50
11:50 orbus joined, f3ew joined, Ulti joined, shmibs joined
DrForr lokien: Maybe theperlfisher.blogspot.com/2016/02/...rs-pt.html would help? 11:50
11:50 Amnez777 joined, xxpor joined, araujo joined, araujo left, araujo joined, anshin joined, moritz joined, maddingue joined, pochi joined, SHODAN joined, espadrine joined
jnthn And by nomming the opening paren you make sure you don't get false positives from stuff inside of them 11:50
11:50 rjbs joined, [particle] joined, adrusi joined, salva joined 11:51 xnrand joined, go|dfish joined, woodruffw joined, lucs joined, leedo joined, woodruffw left, Sgeo_ joined
lokien DrForr: thank you :) 11:51
11:51 cpage joined, woodruffw joined 11:52 kaare_ joined, araujo left
DrForr (I do feel a touch awkward about pimping my own tutorials, but if not me, who? 11:52
11:52 Amnez777 left, Amnez777 joined
DrForr s/$/)/ 11:52
11:52 araujo joined 11:53 araujo left, vike joined
lokien if it's good, why not :D DrForr 11:54
11:54 masak joined, charsbar__ joined, Laurent_R joined 11:55 ab5tract joined, advwp joined
moritz it's totally fine 11:56
as long as you don't start off-topic spamming :-)
11:56 ponbiki joined
lokien jnthn: why doesn't perl print the entire thing? :^( 11:56
11:56 ponbiki is now known as Guest94955
lokien it's (blah blah blah ...) 11:56
why not (blah blah blah blah blah) :^(
11:58 gcole joined, brabo joined
viralbus m: my $x = "a\c[COMBINING ACUTE ACCENT]"; say $x.NFD.list.map({$_ == ord("\c[COMBINING ACUTE ACCENT]")?? ord("\c[COMBINING DOT ABOVE]")!! $_}).chrs; 11:58
camelia rakudo-moar 5d7f65: OUTPUT«ȧ␤»
jnthn lokien: Because you did say, not print? :)
lokien jnthn: oh, right! silly me :D
jnthn lokien: But more idiomatic is to probably .join(', ') or however you want them joined
lokien jnthn: I want them joined by spaces 11:59
11:59 cognominal left, xinming left
jnthn OK, then .join(' ') 11:59
11:59 Cheery joined, domm_ joined, silug joined, DrForr joined
Skarsnik lokien, use .perl and not gist? 11:59
lokien good ol netsplit
11:59 ruoso joined, ashleydev joined, garu joined, Possum joined, cfedde joined, bakedb joined, kst joined
Skarsnik these netsplit today 11:59
11:59 perlpilot joined
viralbus So that works -- thanks! However, $x ~~ s:nfd/.../.../ would have been much prettier. :-/ 11:59
11:59 jercos joined, felher joined, mprelude_ joined, BooK joined, cognominal joined
lokien jnthn: why would I do that? they're printed with spaces already 11:59
11:59 au joined 12:00 Roamer` joined
jnthn lokien: Explicitness? :) 12:00
12:00 Amnez777 left, telex joined, shadowpaste joined, sno joined
dalek Iish/sortiz-fix_require: 983e4b1 | (Salvador Ortiz)++ | .gitignore:
Update .gitignore
12:00
Iish/sortiz-fix_require: abf4dde | (Salvador Ortiz)++ | lib/DB (2 files):
Fix dinamic drivers loading

Somewho require wasn't working and the instantation of the class failed. With an explicit search in the package works. Also add a cache of loaded drivers.
Iish/sortiz-fix_require: 4047025 | (Salvador Ortiz)++ | lib/DBDish/Pg (3 files):
Optimize modules loading
Iish/sortiz-fix_require: 3ea08b5 | (Salvador Ortiz)++ | lib/DBDish/Pg/Native.pm6:
Move ENV var resolution to runtime
12:00 esh joined, kid51 joined, pRiVi joined
lokien jnthn: oh, oh! it's broken! :D 12:00
12:00 pyrimidine joined, Amnez777 joined
jnthn lokien: But yeah, for just spaces you can save some chars 12:00
12:00 johan joined, k-man joined 12:01 sftp joined
lokien m: say 'kdepim-runtime:amd64 (15.08.2-0ubuntu1, automatic)'.comb: /<[\w-]>+ )> ':'\w+ ' ('/ 12:01
camelia rakudo-moar 5d7f65: OUTPUT«(kdepim-runtime)␤»
12:02 petercommand joined, lestrrat joined
lokien whaaa 12:02
12:02 Fleurety joined, jeek joined, bowtie joined, richi235 joined
lokien m: say 'libkf5kdelibs4support-data:amd64 (5.15.0-0ubuntu1, automatic)'.comb: /<[\w-]>+ )> ':'\w+ ' ('/ 12:02
camelia rakudo-moar 5d7f65: OUTPUT«(libkf5kdelibs4support-data)␤»
lokien m: say 'libxfreerdp-client1.1:amd64 (1.1.0~git20140921.1.440916e+dfsg1-5ubuntu1, automatic)'.comb: /<[\w-]>+ )> ':'\w+ ' ('/ 12:03
camelia rakudo-moar 5d7f65: OUTPUT«(1)␤»
lokien this one!
FROGGS lokien: you can also privmsg camelia if you wanna try many things
lokien jnthn: broken!! :D
12:03 nchambers joined, Lucas_One_ left
lokien FROGGS: sorry, I was sure it'll work every time. but it didn't. I won't do that again 12:03
12:04 profan joined, pmqs joined, raydiak_ joined, agentzh joined, MilkmanDan joined, cibs joined, jcallen joined
FROGGS lokien: np 12:04
12:04 perigrin joined, bowtie is now known as Guest30782, cibs left, xinming joined, cibs joined
FROGGS lokien: if you have questions, you can run an example here and ask for help 12:05
lokien: but if you want to try many things, privmsg with camelia is better
lokien FROGGS: I just wanted to show jnthn his script is broken in some cases :(
moritz you need to relax the \w+ a plus 12:06
12:06 rudi_s joined
moritz you can write ':'\S+\s', automatic' for example 12:06
12:06 vendethiel joined
Skarsnik well it a quick solution, obviously it need more work to handle every case x) 12:06
but dpkg does not give you a better output? 12:07
lokien so I'll try to fix it. hope my pc won't catch fire
12:07 agentzh left, MilkmanDan left
lokien Skarsnik: it's a file from my apt history, I want to purge kde 12:07
12:08 bioexpress left
Skarsnik there was not a meta package for that? 12:08
jnthn lokien: Glancing quickly, that name has a . in it, so you'd need to add . to that first char class
12:09 SmokeMachine____ joined, Lucas_One_ joined, zostay joined
lokien Skarsnik: sadly, no. one has to find and uninstall 10000 packages manually 12:09
jnthn: thanks
12:09 veke joined
Skarsnik I need to use === to compare a Pointer to Pointer (NULL) ? 12:10
FROGGS or +ptr == +ptr 12:13
12:13 rindolf joined
arnsholt jnthn: Yeah, I think I have a half-done NativeCall with 6pe branch somewhere 12:13
12:13 agentzh joined, agentzh left, agentzh joined 12:14 ely-se joined, araujo joined, araujo left 12:15 araujo joined, araujo left, araujo joined
sortiz In branch DBIish/sortiz-fix_require the fix for the issue reported yesterday, I appreciate some review before merge. 12:15
Skarsnik did you fix only the require stuff? 12:16
for me it's a rakudo bug probably x)
12:17 araujo left, araujo joined, sufrostico joined, lokien left
sortiz Can be a rakudo bug, but now it works. All tests passed and allows me to work in the array stuff. 12:19
Skarsnik nice you patched the env stuff ^^ 12:20
sortiz I fix also the problem with the env vars captured at compile time, I move it's resolution to runtime.
Skarsnik I don't like this solution because it use NC internals xD
sortiz Yep, and implement a cache of loaded drivers to avoid a double require. :) 12:21
I know that you don't be so happy with it, but need to fix it any way, later can discuss a better way. 12:22
arnsholt Hmm, wait. Looks like that stuff is merged actually 12:23
12:24 kid51 left
Skarsnik I am not fan of the changes in the need/use/important, but avoiding the double require is nice 12:24
*import
12:24 Amnez777 left, _mg_ left, DrPete left, luiz_lha left 12:25 jast joined, jdv79 joined, kshannon joined, squain joined, risou joined, frederico joined, lnx joined, Rotwang joined, cxreg joined
RabidGravy :-\ 12:25
12:25 Zero_Dogg joined, Zero_Dogg left, Zero_Dogg joined, drforr1 joined, Amnez777 joined, luiz_lha joined, frew joined, aigan_ joined, flussence joined, klapperl joined, apathor joined, Humbedooh joined, retupmoca joined, hobbs joined, riatre joined, hobbs left, hobbs joined, pdcawley joined
RabidGravy what is going on with this network today 12:25
12:25 ocbtec joined, arnsholt joined, dalek joined, ChanServ sets mode: +v dalek, jameslenz joined, mspo joined, sQuEE joined, edenc joined, luiz_lha is now known as Guest4943, _mg_ joined, Psyche^ joined, hippie joined, Humbedooh left, Humbedooh joined, Grauwolf joined 12:26 stux|RC-only joined, DrPete joined, camelia joined, Vitrifur joined
Skarsnik hm repeat is supposed to always be executed once? (and the conditio evalued after?) 12:26
arnsholt Skarsnik: I was wrong about the Pointer stuff. That's supposed to work (and mostly does, I think), but the "Pointer.new($address)" constructor is bugged, it seems
12:27 Amnez777 left, Amnez777 joined, notbenh joined
Skarsnik it does not return a parametred object? 12:27
12:27 simcop2387 joined, MadcapJake joined
arnsholt Looking at the code, I think not 12:27
In the address constructors, try replacing ::?CLASS with self.WHAT
12:28 ChanServ sets mode: +v camelia, vendethiel left
dalek Iish: 983e4b1 | (Salvador Ortiz)++ | .gitignore:
Update .gitignore
12:28
Iish: abf4dde | (Salvador Ortiz)++ | lib/DB (2 files):
Fix dinamic drivers loading

Somewho require wasn't working and the instantation of the class failed. With an explicit search in the package works. Also add a cache of loaded drivers.
Iish: 4047025 | (Salvador Ortiz)++ | lib/DBDish/Pg (3 files):
Optimize modules loading
Iish: 3ea08b5 | (Salvador Ortiz)++ | lib/DBDish/Pg/Native.pm6:
Move ENV var resolution to runtime
Iish: 5f79574 | RabidGravy++ | / (6 files):
Merge pull request #51 from perl6/sortiz-fix_require

Fix for #50
Skarsnik You should do the other driver for the env fix if you are willing ^^ 12:29
12:30 cosarara joined
sortiz arnsholt, yesterday I was asking about that ::?CLASS, without answers ;) 12:30
12:31 mephinet joined 12:32 integral joined, integral left, integral joined
arnsholt I wasn't here for that =) 12:32
12:32 mkz joined, dustinm` left, damnlie left, hoelzro_ joined, [TuxCM] joined, ilmari_ joined, polyflod joined, KotH joined, zakharyas1 joined, dylanwh_ joined, ingy joined, zhmylove joined, nine joined, roguelazer joined, mre joined, siriu5b joined, siriu5b left, siriu5b joined, sergot joined, gfldex joined, ambs joined
sortiz Ups! 12:32
12:32 jnthn joined 12:33 damnlie joined, dindinx joined, atta joined, sjoshi joined, TeamBlast joined, dustinm` joined, darutoko joined, boegel joined, RabidGravy joined, zacts joined
Skarsnik I have a weird bug with a repeat { } while loop 12:33
12:33 zacts is now known as Guest49472, geekosaur joined 12:34 b2gills joined, tadzik joined
masak Skarsnik: bring it. 12:34
Skarsnik Don't know how to golf it
masak (pref'r'bly golf'd)
12:34 dg joined
masak :) 12:34
don't know *yet* how to golf it
12:34 cbk joined 12:35 _mg_ left, _mg_ joined
Skarsnik gist.github.com/Skarsnik/cdcfcb15e766913970c8 12:36
if you look at it the =has child= string should always be followed by a 'BUILD-TREE-CHILD'
12:36 rvchangue joined
sortiz I'll fix the others drivers on the env var issue. 12:36
12:37 nightfrog joined, emdashcomma joined
Skarsnik but it get skipped 12:37
12:37 rodarmor joined
Skarsnik The code miss me children of the xml document because of that x) 12:38
12:39 El_Che joined, khagan joined, peteretep joined 12:40 BuildTheRobots joined, bpmedley joined
Skarsnik Great it's a variant of the { loop() {} } bug that was giving failure after x-mas 12:40
I added a 0; after the loop and it work 12:41
12:42 chansen_ joined 12:44 parisba joined, parisba is now known as Guest26382 12:45 sivoais joined, lucasb joined
sortiz mysql driver lacks a version number, that cause that the development libraries must be installed for it to work, the issue #47, I will use v18, the one on my system. Comments? 12:45
Skarsnik Nop 12:46
v16-v22 work
I think I have 22 here
12:47 WizJin joined
lucasb will there be a release this weekend or it will get postponed? 12:47
Skarsnik 14-18, not 22 ><
dalek kudo/nom: 8ab2b85 | lizmat++ | src/core/Str.pm:
Cosmetic fix for better highlighting
12:48
Skarsnik I mean mysqlclient does not have a api version fixed. 18 is probably fine but I am pretty sure DBIish work with 16
12:49 ggherdov_ joined 12:50 vendethiel joined
lucasb can someone merge this PR? github.com/rakudo/rakudo/pull/710 12:50
sortiz Ok, but we need to think in a way that allows end users to use it without need to install development libraries.
12:51 Spot__ joined, kipd joined
lizmat lucasb: looking at it now 12:51
12:51 mithaldu_ joined
lucasb lizmat: thank you :) 12:52
12:52 clkao joined
sortiz And not need to set the env var unless the have special requirements. 12:52
12:52 Amnez777 left
dalek kudo/nom: 7a8d085 | lizmat++ | src/core/Str.pm:
Move LSM class closer to client

To allow for easier refactoring
12:52
12:53 Guest26382 left, Ven joined
Skarsnik segfault in display is annoying x) 12:55
RabidGravy Okay, in the circumstance that panda gets a module's Build.pm the "Build" gets in the LEXICAL::GLOBALish:: but not in GLOBAL:: and ::("Build") is not finding the symbol, does that mean that ::() needs fixing or is there another way of doing this? 12:56
12:57 sjoshi left
Skarsnik could be tied to the require ::() stuff? 12:58
RabidGravy but more importantly GLOBAL::<Build>:delete isn't deleting anything hence the redefinition error
almost certainly
lizmat RabidGravy: have you tried GLOBAL::.DELETE-KEy('Build') ? 12:59
*KEY
Skarsnik well :delete should work? 13:00
RabidGravy yeah, I'm curious as to why there would be a difference
lizmat :delete is syntactic sugar allowing for deleting slices and such
I would just want to check whether the sugar is getting in the way somehow
Skarsnik is there a way to remove the Use of uninitialized value of type blabla in String context? 13:01
lizmat Skarsnik: afaik, that warning was put there for a reason
Skarsnik well it's annoying when debugging 13:02
I mean, just replace with '' if it's undef x)
dalek kudo/nom: 5dfdc11 | (Salvador Ortiz)++ | src/core/Exception.pm:
Exception.fail should reliably die if outside of a routine

A straight port of github.com/rakudo/rakudo/commit/31...ff9d239cd8
kudo/nom: f5a712f | lizmat++ | src/core/Exception.pm:
Merge branch 'patch-1' of github.com/salortiz/rakudo into salortiz-patch-1
kudo/nom: bcab502 | lizmat++ | src/core/Exception.pm:
Merge branch 'salortiz-patch-1' into nom
Skarsnik hm look like I have a missized union 13:05
lizmat Skarsnik: without the warning, you might not have found out ? 13:07
Skarsnik na it segfault
lizmat :-(
RabidGravy lizmat, It's not the deleting that is the problem, it's that the symbol isn't in the GLOBAL:: to be deleted at all :-\ 13:09
13:10 veke left
RabidGravy I can actually reproduce now by running Panda::Build.build twice 13:11
13:11 vendethiel left
RabidGravy but yeah, the ::() isn't finding the symbol even though I can see it, so It needs to be fixed 13:15
13:18 Actualeyes joined, vendethiel joined
sortiz RabidGravy, In DBIish I had to be very specific to make ::($foo).new() work. 13:21
stmuk "Don't know how to 'no warnings' just yet 13:22
any work around? I am finding the nativecall version nagging annoying
RabidGravy CONTROL { when X::Warni { $_.resume } }; or something like that 13:23
13:23 Actualeyes left
jnthn CX::Warning I think 13:24
Skarsnik it's not a warning x) 13:27
it's a note
jnthn :/ 13:28
13:28 uruwi joined
stmuk I just used X::Warn to make warnings fatal by mistake so I'm getting there :) 13:29
CX::Warn even
13:30 ilmari_ is now known as ilmari
Skarsnik Could be raise to a warning maybe? 13:31
13:31 apiw joined
jnthn Sounds like 13:31
Modules really shouldn't note
13:32 lucasb left
jnthn (Unless they're expected to do output to stderr as part of their useful function) 13:32
sortiz stmuk, About versions, are you talking about the detail with mysql in DBIish?
stmuk its not DBIish .. it's SDL2::Raw .. but I get the version warnings with most nativecall modules 13:33
jnthn Is the warning worth it? 13:35
Skarsnik well they forget to give a version
flussence I've never seen anyone say a *positive* thing about it...
13:35 uruwi_ joined
jnthn Skarsnik: Yes, but should NativeCall be so strongly forcing that on people? 13:35
I'm not convinced it should. 13:36
moritz Skarsnik: or maybe it's just code from before the versioning thing
RabidGravy so yeah it does seem that the ::() isn't looking in the right place for a lexical symbol
Skarsnik os X/BSD/Linux doc about shared lib say it should always give an ABI/API version
flussence and it's a bit hypocritical to demand more out of nativecall users than *the language itself* bothers to give for its compiled libs
13:37 uruwi left
RabidGravy right, but a lot of things either ignore that or they got built some way that it doesn't get one 13:37
sortiz The problem is that without a version number, NC can only found the library via then symlink of the development version.
s/then/the 13:38
RabidGravy if it is indeed a symlink
some things just install a .so
sortiz Normally that's the case
Skarsnik lot of distrib chose to provide the .so as a symlink in the devel package, because that what it should be
.so is a devel thing
still according to doc about shared lib
RabidGravy it's not
I have 50+ .so files in /usr/lib64 that aren't symlinks 13:39
jnthn Skarsnik: Is that doc stating how things actually *are*, or an ideal for how they should be?
RabidGravy there's nothing anywhere that enforces it
sortiz Sure, for libs without versionised APIs. 13:40
Skarsnik You can complain it miss something to explicitly tell NC to not bother with version, but in most case the version exist and should be used
13:40 addison joined, esh left
Skarsnik I don't think I have raw .so in my debian stable 13:40
13:40 molaf joined
sortiz But that way the caller can't be protected of API changes. 13:40
13:41 esh joined
Skarsnik execpt stuff that are plugin and loaded with dlopen 13:41
13:41 vendethiel left
stmuk neither quietly{} nor CONTROL { when CX::Warn { .resume } } seem to play well with NativeCall since they make further warnings fatal 13:41
sortiz And even dlopen prefer a fully versionised request. 13:42
stmuk maybe I can play tricks with STDERR
flussence that's a good point: even C code compiled with -Wall -pedantic doesn't get this picky about dlopen filenames.
Skarsnik jnthn, www.freebsd.org/doc/en/books/devel...shlib.html www.openbsd.org/faq/ports/specialtopics.html I don't remember where I found for general Unix system 13:43
flussence we have a *worse* user experience than C right now.
13:43 Actualeyes joined, apiw left
sortiz In C, at link time the version is fixed, and we want to jump out that safety net. 13:44
Skarsnik This warning is aimed toward developpers, without it most poeple will write is native('foo') and you will need to install foo-devel on debian/fedora (and probably other)
13:44 addison left
stmuk see also doc.perl6.org/language/faq#Nativeca....so.1.2%21 13:45
Skarsnik This entry is old ^^ 13:46
RabidGravy ls -l /usr/lib64/*.so | grep -v ^l | wc
89
Skarsnik are they real lib or think loaded by another stuff?
13:47 Ven left
RabidGravy I'm not sure what that means in this context, they're .so files without versions (or infact most have versions in the basename it seems) 13:48
Skarsnik I only have 19 on my debian stable (for /usr/lib)
dalek kudo/nom: 82d8e69 | lizmat++ | src/core/Str.pm:
Make LSM.new take the substitutions

So we can basically inline the creation of the object and returning its result. Also use long option names internally for clarity.
geekosaur *sigh* we're going to end up saying "yes fine use the unversioned .so so you have no clue what ABI you have to speak", right?
flussence $ find /usr/lib -type f -name '*.so' | wc -l
718
Skarsnik is find recursive?
there is a shitton on plugin with KDE stuff
RabidGravy need to exclude the symlinks
moritz just like we're saying "you can write this code without writing unit tests, performance tests, integration tests and acceptance tests for it" 13:49
geekosaur fine, use unversioned .so-s. runtime crashes because of incompatible ABI versions are part of The Experience
find is recursive, yes
arnsholt geekosaur: Unconditionally writing to stderr when the wrapper library doesn't supply a version is kinda shit too though
Skarsnik Lib without versionning should be traited as specific case IMO
flussence among other things, that list includes libreadline.so
RabidGravy or "sorry you can't have a Tk binding because it doesn't install versioned libraries"
geekosaur flussence, tha tells me you have developer libraries installed 13:50
C programs do not use the developer libraries.
ldd will show you .so.N not .so
stmuk or don't deploy nativecode in production without developer libraries
geekosaur there's a REASON for that
sortiz I prefer to force the end user to a certain version that need to debug some unnoticed API change.
13:51 DarthGandalf joined
flussence oh right, they link to a symlink in /lib, not /usr/lib. 13:51
Skarsnik That why in my register-native-lib stuff I have a explictly :no-version parameter for case without version
jnthn This isn't really a discussion of "is it better to use versioned libraries when available", it's "should we carp in the way we do now when that isn't specified". I think we at the very least should make it a warn, not a note.
FROGGS I'd vote for 'is native("foo", Nil)' or some such to state that one wants to use unversioned libs
RabidGravy yes
flussence oh, that isn't even a binary file it's an ld script. 13:52
FROGGS though we still have the problem that windows has no concept of versions it seems, right?
Skarsnik and?
It's not an issue
jnthn FROGGS: Yeah, you're generally best just shipping the versions you need together with your application.
Skarsnik you can always put the version. on win32 it does not change the DLL name
sortiz I prefer is native("foo", *) :) 13:53
jnthn Yeah, I'd avoid Nil for it
Skarsnik and it does not warn if you put a path to is native
FROGGS k
jnthn * is better
Skarsnik can we write is native('foo', :no-version) ?
stmuk m: warn "foo"
camelia rakudo-moar bcab50: OUTPUT«foo in block <unit> at /tmp/9EfPvXF5kH line 1␤»
FROGGS so, let's turn that note off by passing *?
stmuk m: quietly { warn "foo" }
camelia ( no output )
stmuk m: quietly { note "foo" }
camelia rakudo-moar bcab50: OUTPUT«foo␤»
13:53 LGD joined
Skarsnik I did not put warn because it point to the code in NC and not the user 13:54
RabidGravy I've just checked a small sample, the tcl, tk, xerces, smime are all unversioned and the public API
13:54 wamba joined
Skarsnik and it's probably confusing 13:54
lizmat afk for a few hours&
FROGGS RabidGravy: but you also have versioned libs for these, no?
13:54 pmurias joined
RabidGravy no 13:54
Skarsnik opengl has unversionned extension
I think
but it's a weird case 13:55
RabidGravy /usr/lib64/libtk8.6.so
13:55 matt_ joined, matt_ is now known as Guest99324, vendethiel joined
FROGGS that's still versioned, isnt it 13:55
sortiz That the case that the packager don't understand the issue an put the version in the name!
pmurias install Readline and having the version warning appear when using the REPL needs to be fixed
13:56 skids joined, cdg joined
RabidGravy yeah, but you'd actually say native('tk8.6'), get a rude warning and not bother 13:56
13:56 cdg left, cdg joined
dalek c: 486d2bf | (Steve Mynott)++ | doc/Language/5to6-nutshell.pod:
mention quietly block
13:57
sortiz you can avoid the warning with native('tk8.6.so')
Skarsnik RPL does not a provided version with RESSOURCE?
hm, interesting for TK
root@testperl6:~/piko/perl6-MiniXML# apt-file show libtk8.5
libtk8.5: /usr/lib/i386-linux-gnu/libtk8.5.so
libtk8.5: /usr/lib/i386-linux-gnu/libtk8.5.so.0
it's indead not a symlink on the dev package 13:58
but debian provide a 0
RabidGravy Plato must be splitting his sides 13:59
anyway this isn't fixing Panda
14:00 MilkmanDan joined
sortiz Sure, and that's more important. 14:01
14:01 Ven joined, burnersk joined 14:02 eiro joined
sortiz RabidGravy, the problem with Panda is the ::($foo) case for Build, no? 14:03
RabidGravy yeah
14:03 Guest26382 joined
RabidGravy well it is now 14:03
14:05 Guest94955 is now known as ponbiki
RabidGravy the actual problem as reported was that it was crapping out with "redefinition of 'Build'" because it was doing GLOBAL::<Build>:delete and it wasn't in GLOBAL:: 14:05
but in LEXICAL::GLOBALish
having remedied that it appears that the ::('Build') isn't finding it
because it's in LEXICAL::GLOBALish not GLOBAL 14:06
or something, got me totally confused
14:07 mrsolo joined
jnthn Hm, did require changes of late break global merging perhaps? 14:08
sortiz I suppose that is caused by the recent llforrn change, see github.com/rakudo/rakudo/commit/f5...2a492aR587
14:09 [Coke] joined
RabidGravy possibly, but I couldn't see anything there that would do it 14:09
jnthn CALLER::LEXICAL::GLOBALish::.merge-symbols($GLOBALish); 14:10
That looks dubious
GLOBAL::.merge-symbols($GLOBALish); would feel righter
sortiz Yes, that is what i was talking about.
jnthn Because you're at runtime 14:11
GLOBALish is only something you'd want to target at compile time, and it becomes GLOBAL by runtime
But it's the top level application's one that becomes GLOBAL
So it's possible that this works in simple test cases, but not as soon as you're a module down in the dependency chain and do a require
[Coke] wonders if we can -schedule- reboots of hack rather than have them come up same day. 14:12
RabidGravy yeah, I think that's probably right
moritz [Coke]: if we can get a professional admin team, yes 14:13
[Coke]: if the responsibility remains with me: no
14:13 Guest99324 is now known as matt_
stmuk I'd say certain remote security issues = instant reboot 14:14
RabidGravy I'm not sure if the expectation is that a require in some lexical scope only has lexical effect rather than global
in which case then the ::() should be fixed 14:15
14:15 jnap joined
RabidGravy or just GLOBAL::.merge-symbols 14:16
the effect previously was indeed global
jnthn You can't have lexical effects in terms of new symbols
Because the set of symbols in a lexpad is immutable by runtime
14:17 vendethiel left
jnthn And yeah, things that are global should be subject to global merging 14:17
Jsut as in use
RabidGravy I'm getting confused here, so why is there even a LEXICAL::GLOBALish at all then? 14:19
jnthn I'm not sure there should be in this code
GLOBALish means "what does this module contribute towards GLOBAL"
sortiz In llfourn commit there are an XXX comment, but I don't understand the details.
14:19 avenj joined
jnthn But when you require you want to influence The Real Thing 14:20
RabidGravy right, so it should be GLOBAL::.merge-symbols and the problem goes away for panda at least 14:21
[Coke] wonders if people use something other than hack to irc from.
[Coke] also ponders just switching away from an always-on irc.
moritz [Coke]: fwiw I can set up a separate virtual machine for IRC
[Coke]: in fact, I've done so in past, but nobody used it
[Coke] moritz: I don't imagine it will avoid reboots any more than any of the other instances. 14:22
moritz [Coke]: well, it was the first reboot of the hypervisor today; hack is being rebooted *much* more often than other machines
14:22 uruwi_ left
Roamer` hm, am I missing something? Is there a way to compile a regex from a string at runtime? Seems I can't call a Regex constructor, and I can't figure out the syntax for interpolating a variable in /../ as in Perl 5 without \Q..\E 14:24
moritz Roamer`: <$string>
Roamer` moritz, hmm, okay, yes... almost... that seems to need me to keep the variables in scope when evaluating the RE, doesn't it? 14:26
I mean, say $re.perl gives me something that has the variable names in there... 14:27
[Coke] irc--
Roamer` ah, well, not exactly... the regex seems to work even after I leave the block with the variables 14:28
moritz, okay, thanks, I was a bit fooled by the fact that the regex refers to the variables by name, I'll try that
stmuk [Coke]: you look like the sort of person who would like 'slack' ;)
[Coke] stmuk: more of an xmpp guy. 14:29
slack is closed source, you have to use their client, yes?
moritz Roamer`: the fun of closuring :-)
sortiz Skarsnik, should I left mysqlclient unversionized? 14:30
14:32 PotatoGim_ joined 14:33 PotatoGim_ left, jnap left, uruwi joined 14:34 polyflod is now known as polyfloyd
Roamer` moritz, hm, still doesn't quite cut it for me. OK, here's what I'm trying to do: parse a string into components, then turn each component into a different RE fragment, then concatenate the fragments into one big RE 14:34
moritz, but if I do something like for @strings -> $s { if $re.defined { $re = /<$re> <$s> } else { $re = /<$s>/ } }, then the first attempt to match against this seems to go into an infinite loop 14:35
14:35 pmurias left
Roamer` and dd $re gives me Regex $re = /<$re> <$s>/ ... which kind of maybe sort of explains the infinite loop :) 14:36
14:36 pmurias joined 14:37 Ven left
sortiz Well, I'll commit with a reasonable v18, and a runtime var for override. 14:37
dalek Iish: ceb56b4 | (Salvador Ortiz)++ | lib/DBDish/ (2 files):
Move env's vars resolution to runtime
Iish: c4d3ff6 | (Salvador Ortiz)++ | README.pod:
Update copyright
Roamer` moritz, nevermind, I'm dumb. I just figured out that I can concatenate the fragments into one big string and say $re = /<$string>/ and... well, it works. 14:38
thanks :)
14:39 tony-o joined
jnthn m: my @strings = <a+ b* c>; say 'aaabbcd' ~~ /:my @bits = @strings; [<?{@bits}> <$(@bits.shift)>]+/ 14:39
camelia rakudo-moar 82d8e6: OUTPUT«「aaabbc」␤»
jnthn That's how you could do it if you really "had to", fwiw ;) 14:40
14:44 kent\n joined
RabidGravy jnthn, regarding this merge-symbols malarkey do you want a PR or can it "just be fixed" ? 14:45
stmuk perlpilot: github.com/perlpilot/benchmark/pull/7 14:46
RabidGravy there are issues against panda and about half the ecosystem as a result of it
jnthn RabidGravy: If somebody can test such a fix helps, I think I'm fine with it going in 14:47
RabidGravy let me see if I can do that 14:49
14:49 ChoHag joined
RabidGravy first add failing test to panda 14:49
sortiz RabidGravy, in the meantime, can be workarounded with the :delete in where you known Build is merged? 14:51
RabidGravy oh yeah, got that part sussed 14:52
and if it really came to it I can find the symbol in the same place
sortiz yep 14:53
14:54 Ven joined
Roamer` jnthn, whoah, it'll take me some time to parse what you wrote there :) ... I just found out about :my in S05, now reading the rest of it carefully 14:54
(that is, I found out about it after I saw it in your example) 14:55
Ven I've found out you can read S05 a lot of time and still have most of it fly over your head :P 14:58
14:59 n0tjack joined 15:00 kurahaupo joined, shicheng joined
perlpilot Still the same old Perl ... there's always something new to learn and you may have to read and re-read and re-read the docs in order to learn some things 15:01
15:01 kurahaupo left, shicheng left
RabidGravy anyway I'm quite relaxed about how long it takes rakudo to build now, I built Ardour from scratch for the first time in ages last night and it took three hours 15:04
tadzik yay, I'm going to gpw \o/ 15:08
RabidGravy harr! 15:09
stmuk me 2 15:11
sortiz Found something! A "my class Foo" results in ::('Foo') fails after required, but an "our class Foo" succeeds! 15:14
15:14 apiw joined
FROGGS that is to be expected 15:15
sortiz Ok, so Panda Build, and in general classes to be loaded by require, should be our, never my. 15:16
RabidGravy jnthn, I can confirm that changing that CALLER::LEXICAL::GLOBALish to GLOBAL does indeed fix the problem that panda is experiencing
ugexe why not just launch Build.pm in a separate process, which is proven to work? 15:17
RabidGravy sortiz, but the default is "our" isn't it?
FROGGS RabidGravy: it is
sortiz Yes.
But authors can use my. 15:18
RabidGravy ugexe, it's not just panda that is afflicted by this
15:20 dalek left
RabidGravy it's "if something requires something in a lexical scope then the global symbols aren't available" which may break e.g. require Foo; ::('Foo').new for instance 15:20
15:21 apiw left, dalek joined, ChanServ sets mode: +v dalek, pnu joined
sortiz But that depends on what Foo is, require is about module files, and ::('Foo') is about symbols. 15:23
ugexe isn't that how its supposed to be though? i.e. lexical stuff stays in lexical scope?
15:23 addison_ joined 15:24 ely-se left
FROGGS sortiz: Foo is always a symbol 15:24
15:24 ely-se joined, uruwi left
FROGGS require Foo will load a compilation unit that is meant to contain such symbol 15:24
ugexe although i think i ran into a similar problem now that im thinking about it. by putting it in the applications root namespace it worked as expected, but in a sub-namespace it would no longer work
FROGGS but it can contain other symbols as well, and also perhaps lack the Foo symbol 15:25
RabidGravy right, but as we discussed, in the case of a class it is also "our" scoped so it should become available
sortiz FROGGS, I was talking about require "foo/Bar.pm", nothing assured you that a Bar symbol results.
FROGGS sortiz: still, the Foo in require Foo is about a symbol Foo 15:26
RabidGravy as ::() appears to be clever enough to traverse the GLOBAL:: to find e.g. ::('Foo::Bar::Baz')
FROGGS sortiz: then we go off on load a file (cu), that is listed as "providing symbol Foo"... look at the META6.json file 15:27
there is the symbol => file mapping table
15:28 addison_ left
RabidGravy but it traverses the GLOBAL:: and the way that require was doing it means that it was never ending up in GLOBAL so couldn't be found under some circumstances 15:28
15:28 virtualsue joined
nine Isn't the panda problem that loading a second Build.pm by the same process fails, because the symbol is still there? The GLOBAL::<Build>:delete; hack fails. 15:29
sortiz FROGGS, that's clear, but for dynamic requires nothing can be assured, that is my point.
15:29 virtualsue left
FROGGS nine: it failed because probably somebody declared the Build class as 'my', that's my guess here at least 15:29
sortiz: then we agree 15:30
sortiz: also for use statements
RabidGravy yeah, because it isn't in GLOBAL::, but deleting from LEXICAL::GLOBALish works, however then the ::('Build') doesn't work because it isn't in the GLOBAL after the require
sortiz And if the class was "my" that results in the "Actually thrown at: in any at gen/moar/m-Metamodel.nqp line 3041" case, btw 15:32
RabidGravy FROGGS, nah, it fails for everything ATM
15:33 uruwi joined
RabidGravy I've made a test that can replicate without a my and fixing the require to do GLOBAL::.merge-symbols makes it pass 15:33
FROGGS ahh, I see 15:34
RabidGravy++
RabidGravy just running spectest
sortiz But that way any require, not only those done in "main" will be _to_ GLOBAL::, is that expected? 15:36
jnthn sortiz: Things that are in GLOBALish *always* want merging into GLOBAL. Same with use, it doesn't matter where the use statement is. That only matters for lexical things. 15:37
sortiz jnthn, Ok, all clear to me now. 15:38
Skarsnik hm, how work Cunion in memory? 15:40
sortiz Skarsnik, like a union in C, no? 15:41
Skarsnik I mean in C
Ven well, it's just memory. the size itself is the size of the biggest union
RabidGravy it allocates enough memory for the largest itm 15:42
nine llfourn: you want to read this ^^^
jnthn And there's no discrimination. \o/
Or, /o\ :)
Skarsnik I try to figure why display a C union segfault sometime x)
sortiz So only one member can be used at a time. 15:43
15:43 apiw joined
jnthn Well, if you have something where it could hold a pointer or an int, and you try to access the pointer "view" when it's holding an int, that'll segfault pretty nicely :) 15:43
15:44 dakkar joined
sortiz I.e you need to know which is valid. 15:44
15:44 mst joined
jnthn Right 15:45
github.com/MoarVM/MoarVM/blob/mast...terp.h#L14 # the MoarVM register union, as a concrete example :) 15:46
15:46 perlpilot left, perlpilot joined
Skarsnik maybe gist on repr CUnion should say "nop" instead of sometime working and sometime not ^^ 15:47
skids Or just show pointer values as pointers, don;t try to derefernce them.
Skarsnik It's annoying trying to display a struct that hold a cunion 15:48
arnsholt Yeah, you can't reasonably expect gisting a CUnion to give terribly useful information
15:48 isBEKaml joined
skids It can, just it will also display some useless information, too. 15:48
Unless you have knowlege of how to pick a union member based on other fields. 15:49
Skarsnik but the (bad) side effect is randomly making display a cstruct working or not
arnsholt Exactly 15:50
RabidGravy make your own gist method in the CStruct
sortiz btw I suppose that the CUnion REPR should delay the unmarshaling to the access time.
15:51 apiw left
arnsholt RabidGravy: Having .gist on CUnion be broken *unless* you implement something to unbreak it isn't a terribly cool thing to do, though 15:51
sortiz lunch time& 15:52
RabidGravy true
Skarsnik it's tricky because it's a 'normal' class with a special REPR
15:53 xnrand left, xnrand joined
Skarsnik I am confused. I use $stuff !=== Pointer to check if it's not NULL. It does not always work 15:57
FROGGS Skarsnik: why dont you just check for +$stuff ? 15:58
jnthn Or $stuff.defined
arnsholt Because that's different from everything else in NativeCall?
skids I would expect a "union { u8 a; u16 b; *int p }" where the u16 is set to 0xff11 to be displayed something like "{ union { a = 0x11 # or␤b = 0xff11 # or␤CPointer(0x11ff0000) } }" (supposing the endianness was that way) by default. 15:59
erm 0xff110000
arnsholt jnthn: And .defined wouldn't work I think
Skarsnik Oh I need the full type
arnsholt You can create a definite instance of Pointer that converts to NULL, via Pointer.new(0)
Skarsnik Pointer[mxml_node_t] x)
skids wonders how gdb displays unions. 16:00
jnthn arnsholt: urgh 16:01
Skarsnik I am not sure how NC fill Pointer attributes when they are NULL
arnsholt Probably something like that
Skarsnik Look it does not set the attriute at all
MadcapJake Still UNKNOWN for all Perl FOSDEM videos... video.fosdem.org/2016/h2214/STATUS.TXT 16:02
arnsholt jnthn: I know! I think it's mostly a question of tweaking the relevant constructors to just return the type object if the supplied address is zero, but I never got around to fixing that last time I hacked on NC (theses consume an alarming number of tuits...)
16:02 Ven left
Skarsnik guh this xml lib is driving me crazy 16:03
it lost children x) 16:06
RabidGravy jnthn, it seems that the spectest passes with that s/CALLER::LEXICAL::GLOBALish/GLOBAL/ 16:08
jnthn RabidGravy: OK; any chance of adding a spectest to cover this bustage also? 16:10
16:11 mr_ron joined
RabidGravy yeah, that's doable 16:13
16:16 PotatoGim_ joined
mr_ron m: for $*IN.lines { .say } 16:17
camelia rakudo-moar 82d8e6: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGall␤Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;␤Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí␤I mo dhiaidh bhí gleanntáin ghlas’ G…»
16:17 hoelzro_ left
mr_ron m: for $*IN.lines -> $_ is copy { s/(\w+)/{$0 ~ $0}/; .say } 16:18
camelia rakudo-moar 82d8e6: OUTPUT«CéadCéad slán ag sléibhte maorga Chontae Dhún na nGall␤AgusAgus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;␤NuairNuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí␤II mo dhiaidh bhí gleannt…»
16:18 MilkmanDan left, MilkmanDan joined
ilmari m: for $*IN.lines -> $_ is copy { s/(\w+)/{$0 ~ $0}/g; .say } 16:19
camelia rakudo-moar 82d8e6: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Bi5iBFF9qR␤Unsupported use of /g; in Perl 6 please use :g␤at /tmp/Bi5iBFF9qR:1␤------> 3ines -> $_ is copy { s/(\w+)/{$0 ~ $0}/g7⏏5; .say }␤»
ilmari m: for $*IN.lines -> $_ is copy { s:g/(\w+)/{$0 ~ $0}/; .say }
camelia rakudo-moar 82d8e6: OUTPUT«CéadCéad slánslán agag sléibhtesléibhte maorgamaorga ChontaeChontae DhúnDhún nana nGallnGall␤AgusAgus dhádhá chéadchéad slánslán agag anan EireagalEireagal ardard inaina stuastua osos cionncionn caorcaor isis collcoll;␤NuairNuair aa ghlua…»
mr_ron m: for $*IN.lines <-> $_ { s/(\w+)/{$0 ~ $0}/; .say }
camelia rakudo-moar 82d8e6: OUTPUT«Parameter '$_' expected a writable container, but got Str value␤ in block <unit> at /tmp/CvavapU4Gs line 1␤␤»
16:20 hoelzro joined, jnap joined
mr_ron I sort of understand why the last case fails but its a common case and think it should be documented someplace ... 16:20
16:20 ely-se left 16:21 hoelzro left
jnthn Perhaps worth documenting with .lines 16:21
(And yes, the behavior is correct.) 16:22
mr_ron thanks - jnthn++
16:23 musiKk joined, _nadim joined
_nadim Hi every one! 16:24
skids o/
16:24 uruwi left 16:27 mr_ron left 16:28 rntz joined
rntz does anyone know a good and thorough guide to the semantics of junctions/autothreading? I'm wondering why, for example, (1|2) + (3&4) becomes (4|5)&(5|6) and not (4&5)|(5&6). 16:30
stmuk . o O ( behaviour )
jnthn rntz: Language spec on this covers it, at least: design.perl6.org/S09.html#Junctions 16:34
Around "If two or more arguments are junctive"
isBEKaml Hi, must `take` on a list always be used in the context of a `gather`?
doc.perl6.org/routine/take#class_Mu 16:35
jnthn isBEKaml: Strictly, in the dynamic scope of
rntz jnthn: thanks
jnthn isBEKaml: Though it's common to have all the takes in the static scope, for readability if nothing else :)
isBEKaml jnthn: thanks. Why can't we do something like(not valid): take 5, @array;?
16:36 uruwi joined
jnthn m: say gather { my @array = 1,2,3; take 5, @array }; 16:37
camelia rakudo-moar 82d8e6: OUTPUT«((5 [1 2 3]))␤»
isBEKaml perl6: my @a = <a b c d e f>; take 5, @a;
camelia rakudo-jvm f99bdb: OUTPUT«take without gather␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-moar 82d8e6: OUTPUT«take without gather␤ in block <unit> at /tmp/tmpfile line 1␤␤»
jnthn I don't really get what you'd want that to do
isBEKaml jnthn: \o/, now that's clear enough to me :-) 16:38
jnthn I mean, just `push @array, 5` if you want to stick the value in the array
:)
isBEKaml jnthn: no, I have > 5 elements in an array and I just want the first 5
16:38 hoelzro joined
jnthn Oh... 16:38
isBEKaml m: my @a = <a b c d e f>; say gather { take 5, @a }; 16:39
camelia rakudo-moar 82d8e6: OUTPUT«((5 [a b c d e f]))␤»
jnthn m: my @a = <a b c d e f>; say @a.head(5)
camelia rakudo-moar 82d8e6: OUTPUT«(a b c d e)␤»
16:39 TimToady joined
Skarsnik hm, trying to give a Callback to NC Internal error: Unwound entire stack and missed handler 16:39
:(
ilmari m: my @a = <a b c d e f> say @a[0..5]
camelia rakudo-moar 82d8e6: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kdxlkvvk4B␤Two terms in a row␤at /tmp/kdxlkvvk4B:1␤------> 3my @a = <a b c d e f>7⏏5 say @a[0..5]␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statemen…»
ilmari m: my @a = <a b c d e f>; say @a[0..5]
camelia rakudo-moar 82d8e6: OUTPUT«(a b c d e f)␤»
16:39 khw joined
ilmari m: my @a = <a b c d e f>; say @a[^5] 16:39
camelia rakudo-moar 82d8e6: OUTPUT«(a b c d e)␤»
isBEKaml jnthn: Ah, I was thinking too haskell-y, scala-ish :-) 16:40
jnthn Skarsnik: Means your callback threw an exception (yes, we need to tweak the error reporting)
isBEKaml: Yeah, C# uses .Take(n) also for what we have with .head, so it's an easy one to fall in to :)
Though I didn't realize you were doing so for a while...
Skarsnik Probably not that. the function just do : return MXML_TEXT; (it's an enum value) 16:41
maybe it does not like fully typed Callback. I did not see an example on the test 16:42
MadcapJake I've got an example of using Test::Lab with AlexDaniel++'s variations on partitions (gist.github.com/AlexDaniel/1e2d1c5...d37c5d43a) here: github.com/MadcapJake/Test-Lab/blo...splits.pl6 16:46
isBEKaml jnthn++ 16:47
Skarsnik hm, if I give it a native callback it fail differently 16:48
sortiz Skarsnik, Can I see your code? 16:51
16:52 _mg_ left
Skarsnik gist.github.com/Skarsnik/abea9f36f99c548b147d 16:52
the binding is generated x)
16:53 _mg_ joined
Skarsnik this give me Cannot invoke object with invocation handler in this context 16:53
for the loadstring
jnthn Pretty sure we don't handle passing other native functions in as the callback yet 16:55
16:56 sufrostico left
Skarsnik I try passing it the dumb_callback that does not work :( 16:57
16:57 sufrostico joined
sortiz Well, for start when the signature of the native (C) function needs, for example, xml_node_t*, you don't need Pointer[xml_node_t], all CStructs in another or in a call pass by reference i,e a pointer. 16:57
Pointer[xml_note_t] results in xml_node_t** 16:58
Now what you want (The API want)
s/Now/Not/ 16:59
skids
.oO(No problem cannot be created by adding an unecessary level of indirection :-)
sortiz In NC, even for native types, a simple "is rw" produce a pointer in a call. 17:00
Skarsnik Pointer work :)
17:02 Util joined
Skarsnik think that the code is generated. I have no way of knowing if a xml_node_t* will be just read or erased (so put rw or not) 17:02
17:02 musiKk left
timotimo i wonder if we can specialize the "too many positionals passed" error message to point out whether or not an invocant is included in the count 17:03
yoleaux 07:28Z <FROGGS> timotimo: how so?
sortiz The API give you clues, for returning an allocated pointer in an argument, the API needs ** 17:04
17:05 vendethiel joined
MadcapJake Ruby was a strikingly easy language to translate into Perl 6 17:06
sortiz To pass an already allocated one, the API needs *. So the from the signature you know what you need.
And if you are writing a binding generator, you need to understand those details very well. 17:08
timotimo moritz: i'm ashamed to say, but i *think* i forgot to etckeeper the things in /etc on www.p6c.org after setting up collectd there :( 17:10
Skarsnik Well the main generator is called Dumb ^^
but anyways. why passing this callback does not work (the dumb one) 17:11
17:13 yurivish_ joined, zpmorgan joined 17:15 flussence left, uruwi left 17:18 isBEKaml left, bartolin joined
Skarsnik I think I will switch to libxml2 x) 17:18
sortiz I was about to question that. I don't see in ecosystem libxml2 bindings! 17:19
Skarsnik I think FROGGS started it 17:20
17:20 uruwi joined
moritz timotimo: well, just add it now 17:20
sortiz Found two in github, but apparently abandoned. 17:21
17:21 flussence joined 17:24 addison_ joined
sortiz Yep, I found FROGGS's work. 17:25
Skarsnik Ok the lib I want to use is buggy 17:27
the last version x)
17:27 sjohnson joined 17:28 zpmorgan left, addison_ left 17:31 BuildTheRobots left 17:32 dalek left, BuildTheRobots joined, yurivish_ left 17:33 yurivish joined, pnu left, peteretep left, jnap left 17:34 mrsolo left, boegel left, polyfloyd left, avenj left, WizJin left, dustinm` left, hobbs left 17:35 flussence left, hoelzro left, ilmari left, [TuxCM] left, riatre left 17:36 xnrand left, simcop2387 left
timotimo whew, finally caught up with backlog 17:36
Skarsnik sortiz, I think my issue about the struct and Pointer[struct] is that you have the same perl6 translation for 2 differents thing
without that 17:37
timotimo .tell froggs what do you mean "how so"? i looked at htop when your cron job is running and it showed quite high cpu usage. maybe we can make it only fire when something actually needs changing on cpandatesters, perhaps by pushing from hack instead of pulling from www ...
yoleaux timotimo: I'll pass your message to froggs.
17:38 sjn joined
arnsholt Skarsnik: Given "class MyStruct is repr('CStruct') { ... }" MyStruct and Pointer[MyStruct] are *not* the same 17:38
17:38 peteretep joined, riatre joined, polyfloyd joined 17:39 flussence joined, boegel joined, jnap joined
arnsholt Bare MyStruct is a my_struct_t* whereas Pointer[MyStruct] is a my_struct_t** 17:39
17:39 lnrdo joined, dalek joined, ChanServ sets mode: +v dalek, hacst joined, zpmorgan joined, [TuxCM] joined 17:40 dustinm` joined, pnu joined, xnrand joined
timotimo moritz: there's currently some changes queued up for etckeeper; changes to sshd_config (max auth tries) and testers.perl6.org.service (limit nprox) 17:40
17:40 hobbs joined
timotimo and also some additions to group and passwd are in there which i believe "etckeeper commit" would pick up automatically 17:40
17:40 simcop2387 joined, simcop2387 left, simcop2387 joined
sortiz Skarsnik, Indeed, the REPRs of all those, to the C side, give just a pointer (Unless you use HAS for inline them) 17:41
timotimo i'll be AFK for a bit, but after that, i might turn those into a bunch of commits
17:41 dfcarpenterak joined, ilmari joined
Skarsnik arnsholt, I mean having void foo(struct piko bar) and void foo(struct piko bar *) translating both into sub foo(piko) is weird 17:42
17:42 olinkl joined 17:43 pierrot joined, SCHAAP137 joined, hoelzro joined
skids Maybe the first should be sub foo(piko) and the latter sub foo(piko is rw) 17:44
RabidGravy jnthn, shall I just push the new test for the GLOBAL:: thing to roast? it took a bit longer than I thought because I realised I need to test that it failed without the change
17:44 solarbunny joined
Skarsnik and you can always do a pr in github.com/Skarsnik/gptrixie x) 17:45
arnsholt Skarsnik: NativeCall isn't able to handle non-pointer structs as arguments to functions yet
17:45 caasih joined
sortiz Skarsnik, But very few API pass structures by value, most of them are by reference, so by a pointer, i.e. piko* 17:46
17:46 mrsolo joined, skarn joined
timotimo how do structs get passed as arguments to functions at all? without "by reference"? 17:46
skids On the stack.
(or registers, unpacked)
17:46 dakkar left 17:47 ugexe joined
sortiz skids, seems to me that only natives support the 'is rw' trick. 17:47
timotimo ah
geekosaur haskell's ffi still doesn't handle either passing or returning struct-s (as opposed to struct pointers)
...and I've seen maybe *one* request for that functionality in 10 years 17:48
alpha123 like no APIs do that ever
skids Well, perl's "is rw" is more like thing** really and "is ro" is more like thing* since the ro only applies to the container. 17:49
17:50 shicheng joined
skids There are some "const" incantations of course. 17:50
17:53 _mg_ left
skids
.oO(maybe a NC-only "is const" thing for introspective purposes, but IIRC there are not many bits left in the parameter trait mask)
17:53
sortiz btw, for MoarVM memory managed things, there are some problems when the memory ownership should be transferred to C land.
arnsholt geekosaur: Yeah, that perhaps the missing NativeCall feature I'm the least worried about
sortiz I agree arnsholt. 17:54
arnsholt Tracking of ownership of memory is a much more pressing concern, as well as a way of handling strings that can't be marshalled and freed immediately before and after a call that isn't explicitly-manage() and doesn't piss you off when you have to use it 17:56
17:58 autarch joined
sortiz That's an issue. 17:59
RabidGravy gah, warnocked
17:59 WizJin joined
arnsholt sortiz: I have ideas for the former problem, but no tuits sadly 17:59
RabidGravy shall I just push this test to roast (it will fail before the associated PR to rakudo) or PR it? 18:00
arnsholt My only concrete point of action for the latter is that explicitly-manage needs to be nuked from orbit, but sadly don't really have any good replacements yet
sortiz arnsholt, I have tuits, but yet a lack of MoarVM fu.
arnsholt Except maybe a utility function that takes a Str and does all the legwork of copying it into a CArray
Which might be what we need, TBH 18:01
18:01 FROGGS joined
sortiz arnsholt, see my github.com/salortiz/NativeHelpers-Blob module. 18:01
arnsholt sortiz: It's not too hard, TBH. Assuming you're comfortable with C, of course. But if you're dealing with NativeCall, you pretty much have to be (or you're gonna have a bad time)
dalek ast/require-globals: 91f9a91 | RabidGravy++ | S11-modules/ (3 files):
This tests for the problem fixed in

  github.com/rakudo/rakudo/pull/714
That is, if a module is required in an inner scope then the global symbols aren't available by indirect lookup.
18:02
arnsholt Yeah, something along those lines, most likely
sortiz I'm comfortable with C, but need to study first the source to understand the details, the style, etc. And it is a large code base! 18:03
18:03 espadrine left
dalek kudo/nom: 93e4cd6 | RabidGravy++ | src/core/operators.pm:
Fix the behaviour of require WRT to global symbols
18:05
kudo/nom: 6159b5e | jnthn++ | src/core/operators.pm:
Merge pull request #714 from jonathanstowe/nom

Fix the behaviour of require WRT to global symbols
jnthn RabidGravy: If you didn't already push the roast test, go ahead :) 18:06
oh, I see you did
arnsholt sortiz: Yeah, it's a big chunk of code. But you don't have to grok all of it at once. The relevant bits are src/6model/reprs/{CArray,CStruct}.{c,h} and friends
jnthn But didn't merge it
arnsholt And the C API is really good, thanks to jnthn++'s excellent design work
dalek ast: 91f9a91 | RabidGravy++ | S11-modules/ (3 files):
This tests for the problem fixed in

  github.com/rakudo/rakudo/pull/714
That is, if a module is required in an inner scope then the global symbols aren't available by indirect lookup.
RabidGravy in master now :) 18:07
jnthn RabidGravy++
sortiz arnsholt, my module above is a prof of concept about my plan to integrate Blobs to CStruct, CArray, etc. 18:09
18:11 Psyche^_ joined
sortiz *proof 18:12
18:15 Psyche^ left, beginner joined
dalek ast: b36e721 | RabidGravy++ | S11-modules/require.t:
It helps if I get the plan right
18:19
18:20 uruwi left, _mg_ joined
Skarsnik arnsholt, the thing I would with NC is a c-string type that act as a string but unencoded x) 18:23
and example is mysql that return a char * that can be raw data (but ending with 0) or text that you know the encoding via other function 18:24
18:25 addison_ joined
sortiz Skarsnik, Then a CArray[uint8] can do the work, no? 18:26
Skarsnik I think it does not work 18:27
I think you don't get the size
well not every time
or because you can't have a CArray as a return type? 18:28
timotimo CArray is for when you know the size "separately"
Skarsnik but etheir way it's just a c string
18:29 ELBeavers joined, addison_ left
sortiz Obviously the size of unmanaged ones must be determined by other means. 18:29
Skarsnik I mean it's a case or having a real c string (data ending with 0) type will more interesting 18:30
sortiz You can search the \0, or get from another member of the struct. 18:31
arnsholt My philosophy is that NativeCall types should map as closely as possible to C semantics, with little to no magic on top
Skarsnik I think you can't have sub foo return CArray
sortiz I agree arnsholt. 18:32
arnsholt C is sufficiently weird, and the consequences of slipups sufficiently severe, that potentially leaky abstractions with correspondingly surprising side-effects are gonna be a terrible idea
timotimo at least coercing Pointer to CArray is easy/possible/doable
Skarsnik Na it's fine for most case to have char * as Str
sortiz Done timotimo.
timotimo and i could imagine a helper function that turns Pointer into Buf or Str based on "null terminated"
18:32 spider-mario joined
timotimo sortiz: sorry, done what? 18:33
arnsholt NativeCall is C in Perl 6 clothing, basically
sortiz timotimo, see my github.com/salortiz/NativeHelpers-Blob
timotimo ah, neat. 18:34
um, how is "sub Pointer" not a terrible idea? :)
sortiz Is a cast to Pointer. 18:35
timotimo hm
well, i guess namespacing makes that unproblematic
18:35 beginner left 18:36 kid51 joined, beginner joined 18:37 addison_ joined
Juerd char* as Str is a weird abstraction. 18:37
sortiz And all can be wrapped in a class, if decided. It's a proof of concept ;) 18:38
Juerd But I guess there are no real solutions here
Skarsnik ?
timotimo right, you cannot have a Str from C data without a copy
Skarsnik it's fine for lot of case since there is an is encoded trait
oh that
yeah, it's kind of bad x)
timotimo unavoidable is what it is
though of course we could build a CString class that gives you an API to work with C strings like p6 strings while keeping the underlying buffer around 18:39
but as soon as resizing happens, you're absolutely screwed.
skids still votes for calling zero terminated strings "Ztr"
timotimo not bad
Skarsnik xD
Juerd timotimo: I was hoping that at some point, we could have CStr, which is basically subset CStr of Str where !/\0/, mostly for security reasons (hostnames, paths, and other stuff that eventually ends up in system calls should be limited to CStr, not Str), so could you pick another name? ;) 18:40
skids: Way too cute. I like it :)
timotimo m: say "foo\0"
camelia rakudo-moar 6159b5: OUTPUT«foo␀␤»
timotimo hm.
BBIAB
18:43 Amnez777 joined
RabidGravy re-tests all of his modules again 18:44
18:44 addison_ left 18:45 Amnez777 left, Amnez777 joined 18:49 musiKk joined 18:51 addison_ joined 18:52 Guest26382 is now known as parisba_ 18:53 ELBeavers left, breinbaas joined 18:58 raiph joined, zakharyas1 left, firstdayonthejob joined
rntz how is ($a, $b) different from [$a, $b]? 19:01
nine rntz: List vs. Array
rntz aha, ok
19:03 Actualeyes left
rntz sprunge.us/DfQc?perl junctions have some funny behavior sometimes 19:04
19:07 kid511 joined
timotimo m: say all() < none(any()) 19:08
camelia rakudo-moar 6159b5: OUTPUT«all()␤»
timotimo m: say none(any()) < all()
camelia rakudo-moar 6159b5: OUTPUT«none(all())␤»
19:09 kid51 left, musiKk left
timotimo FROGGS: any comment about the rsync thing? maybe we could have the thing that receives reports write a "version" file that we compare against before rsyncing? 19:10
19:12 gcole left
FROGGS timotimo: would be better to rsync smaller portions maybe... in case we could partition the files 19:12
yoleaux 17:37Z <timotimo> FROGGS: what do you mean "how so"? i looked at htop when your cron job is running and it showed quite high cpu usage. maybe we can make it only fire when something actually needs changing on cpandatesters, perhaps by pushing from hack instead of pulling from www ...
rntz timotimo: hm, no, it's not that what's on the lhs vs. rhs of the < is different
19:13 _dolmen_ joined
rntz it's [$x,$y] versus swap($y,$x), which both produce [$x,$y] 19:13
19:13 vendethiel left
rntz but when swap($y,$x) gets autothreaded, it behaves differently than [$x,$y] 19:13
FROGGS timotimo: or we push into a queue.... hmmm
timotimo oh
autothreading
FROGGS: partitioning sounds like a thing worth trying
rntz m: say (all() < none(any())).so 19:14
camelia rakudo-moar 6159b5: OUTPUT«True␤»
rntz m: say (none(any()) < all()).so
camelia rakudo-moar 6159b5: OUTPUT«False␤»
rntz ok, at least *that* behaves as expected
timotimo there's a reason we advocate "don't give people junctions if they're not expecting them" 19:15
like, don't let junctions leak out of your API
rntz ah, ok.
I am a total newcomer and do not know anything about these guidelines
timotimo ah
rntz I was just looking at junctions and thought they looked interesting
19:15 tonye joined
timotimo i think we ought to point that out a bit more visibly 19:15
rntz and then I realized they're probably a law-disobeying applicative instance
(in haskell-speak) 19:16
timotimo i didn't do enough haskell to understand that
ugexe nickl@li685-90:~/perl6$ perl6 -e 'require IO::Socket::SSL; say 42; say (require IO::Socket::SSL);'
42
No such symbol 'IO::Socket::SSL'
rntz roughly, it means [$x,$y] and swap($y,$x) don't always behave the same :P 19:17
19:17 ELBeavers joined
timotimo i expect [ ] doesn't autothread 19:17
rntz it doesn't matter whther you make it autothread, it still has the behavior
timotimo you can control whether or not something autothreads by accepting "Mu" instead of "Any"
rntz my original version had "sub pair($x, $y) { [$x,$y] }"
19:18 tonye left
rntz or rather, it doesn't matter whather you use [] or a subroutine 19:18
timotimo m: sub pair($x, $y) { say "beep boop"; [$x, $y] }; pair(none(all), all())
camelia rakudo-moar 6159b5: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YYClhDhOvB␤Function "all" may not be called without arguments (please use () or whitespace to denote arguments, or &all to refer to the function as a noun)␤at /tmp/YYClhDhOvB:1␤------> 3y "beep boop"; [$…»
rntz autothreading is definitely what makes it have that behavior :)
timotimo m: sub pair($x, $y) { say "beep boop"; [$x, $y] }; pair(none(all()), all())
camelia ( no output )
timotimo m: sub pair(Mu $x, Mu $y) { say "beep boop"; [$x, $y] }; pair(none(all()), all())
camelia rakudo-moar 6159b5: OUTPUT«beep boop␤»
19:18 captain-adequate joined
timotimo ^- it's not about whether or not you use [ ] inside, it's about the call to pair() 19:19
rntz hm? I'm not sure we're talking about the same thing anymore
19:19 ELBeavers left
timotimo maybe not 19:19
rntz definitely using Mu can let you control this behavior
timotimo but you ca nsee that in the one case, pair isn't even called at all 19:20
rntz hm, that's interesting. why is that?
timotimo because if you have no values at all in your junctions, what would the function be called on? 19:21
19:21 shicheng left
rntz ah, I see. 19:21
lizmat hmmm.... in nqp, what's the easiest way to push a list to another list ? 19:22
timotimo splice, i'd say 19:23
19:23 itaipu joined
lizmat hmmm... :-) 19:23
rntz here's the version with a `pair' function, which still has the funny behavior: sprunge.us/WXLT
19:24 cognominal left
rntz I think it's even funnier now that I know pair/swap are never being called! 19:24
timotimo well, they aren't called, but you still get a return value
rntz yup
timotimo you should inspect that return value so you can understand what's going on
rntz the value is being determined by the order in which autothreading iterates over things 19:25
which is determined by the argument order
timotimo yeah
it does all() first adn then any(), or the other way around
i think that way
rntz design.perl6.org/S09.html#Junctions says all()/none() then any()/one()
timotimo right
rntz (and left-to-right within those)
timotimo which makes sense to me
also, i was the one who actually implemented that distinction 19:26
rntz oh, neat
timotimo it was rather easy :)
19:27 M-eternaleye joined
timotimo so, uh, what exactly are we discussing right now? 19:28
RabidGravy stuff
rntz I dunno, I don't think anything in particular?
junctions have weird behavior, but I understand why now
19:29 uruwi joined
RabidGravy anyway all my modules pass (again) 19:29
timotimo good good
19:30 M-eternaleye is now known as eternaleye 19:31 ELBeavers joined, AlexDaniel joined, avenj joined 19:32 _mg_ left, ELBeavers left
FROGGS hmmmm, how do I re-export stuff? 19:35
timotimo you use Foo::Bar :EXPORT?
something like that? 19:36
FROGGS in Foo.pm? and then the user of Foo will see what Foo::Bar exports?
RabidGravy I was actually looking at the tests for that earlier
timotimo i don't really know, i've never had to do that :|
worst case, you could always build an EXPORT sub
RabidGravy use OuterModule :ALL; 19:37
apparently
FROGGS hmm, but that will only import stuff into Foo 19:38
that wont export anything from Foo
19:39 shicheng joined, cdg left 19:40 kjs_ joined
RabidGravy Foo has "use Foo::Bar :ALL" 19:40
FROGGS yes
does not work here
RabidGravy user code has "use Foo :ALL"
19:41 ELBeavers joined
sortiz The :EXPORT tag work well with NativeCall. 19:41
FROGGS to import certain things yet, but not to re-export
yes*
timotimo moritz: do we want to enable the "apache" plugin for collectd on www? collectd.org/wiki/index.php/Apache 19:42
RabidGravy or, alternatively for the total over-kill
then in Foo mainline "sub EXPORT { %(Foo::Bar::EXPORT::DEFAULT::) }" 19:43
FROGGS I guess I lack a unit module declaration
RabidGravy or some variant thereof
timotimo i think the only thing important is that the sub EXPORT is in the unit scope 19:44
if you have a unit module, you are allowed to put it into the module. otherwise it has to be outside the module
FROGGS I have a class with a block, and the subs I want to (re-)export are outside of it 19:45
19:46 virtualsue joined
timotimo moritz: something must have gone wrong on www; etckeeper got uninstalled somehow 19:47
RabidGravy I've got something that does "sub EXPORT { return %( '&trait_mod:<is>' => &trait_mod:<is>) }" which is an alternative for named things
timotimo moritz: shall i just re-install it?
moritz timotimo: +1 to apache collectd plogin 19:48
timotimo: re etckeeper, I think www just has a regular git repo in /etc/ 19:49
timotimo it doesn't; i tried to git commit something and there was a git hook that couldn't run because it tried to run etckeeper
if we want to run www without etckeeper, i can deactivate anything etckeeper related in the hooks to turn the git repo into a true regular git repo 19:50
on the other hand, the apt log shows someone installed and then purged etckeeper. so it's probably meant to be a regular git repository in there
llfourn RabidGravy++ thanks for fixing my mistake. 19:54
and writing nice tests :)
nine: thanks for poking me about the discussion 19:55
FROGGS: there is meant to be use Foo :EXPORT; to re-export but it's NYI. 19:56
FROGGS: take a look at github.com/LLFourn/p6-CompUnit-Util#re-export
RabidGravy llfourn, it took me a while to locate the actual thing from what was manifesting
llfourn RabidGravy: I'm sorry about that :(. I'm justing looking into it now. 19:57
RabidGravy nah, not really your fault, you just unearthed it :) 19:58
llfourn RabidGravy: it looks like panda is using a require-at-a-distance feature that I unkowningly got rid of
19:58 pederindi joined
llfourn I thought that each compunit was meant to have its own view of GLOBAL:: which is what I thought UNIT::GLOBALish was 19:59
RabidGravy it should all be fixed now anyway, but see ugexe's comment on github.com/rakudo/rakudo/pull/714#...-185370730
lizmat seems t/spec/S11-modules/require.t is failing for me with "Undeclared routine: ok" 20:00
RabidGravy which is somewhat of a mystery, I can only guess it is now skipping the symbol lookup
er
llfourn oh that is my mistake I know what's wrong there
I think
dalek ast: ef4425d | RabidGravy++ | S11-modules/require.t:
missed import of ok
20:01
RabidGravy yep, fixed now :)
lizmat RabidGravy++
RabidGravy (I tested what I was testing in another file for convenience ;)
20:02 virtualsue left, rindolf left
FROGGS thanks guys 20:03
20:04 molaf left 20:05 sno left
sortiz RabidGravy, BTW, your fix allows me to simplify DBIish removing the introduced workaround. I'm testing it. 20:08
timotimo i has a cat on my lap <3
system administration will be delayed by a couple minutes or maybe an hour 20:09
lizmat wonders who said that
20:09 rindolf joined
timotimo a line or two of chat is acceptable, but system administration stuff will not be accepted by the cat :) 20:10
Skarsnik huhu
cat is the root of root
20:11 Guest49472 left, darutoko left
llfourn confirmed the require IO::Socket::SSL thing 20:12
20:12 Guest30782 left 20:14 jvcakg joined, virtualsue joined
llfourn require IO::Socket::SSL; say ::("IO::Socket::SSL") works so the solution is to probably just use GLOBAL:: to figure out what to return from require 20:15
RabidGravy almost certainly
llfourn though that's what INDIRECT_NAME_LOOKUP should be doing
timotimo t.h8.lv/andshare/IMG_20160217_211308~2.jpg.jpg
llfourn awww. I can see your screen in the neko's eyes. 20:16
timotimo it's the phone screen, i'd expect
20:19 beginner left 20:22 itaipu left
llfourn I'll make a PR to revert back to the old way it used to find the return value from require while I figure this out 20:23
returning GLOBAL::{$pkg} confirmed not working 20:24
20:24 dfcarpenterak left
RabidGravy as far as I can tell that behaviour isn't tested 20:25
timotimo moritz: etckeeper's pre-commit hook makes sure to store metadata properly when it comes to owners and other things; maybe we do actually want etckeeper?
RabidGravy llfourn, is it actually hitting REQUIRE_IMPORT the second time? If the module is already loaded and no exports it doesn't need to 20:28
llfourn RabidGravy: it's meant to yeah
I mean I haven't changed that I don't think
20:32 raiph left 20:34 yqt joined 20:35 dfcarpenterak joined
sortiz Then I'll wait for this matter settled before another round with DBDish 20:35
20:36 ely-se joined 20:41 rindolf left, kaare_ left
MadcapJake AlexDaniel, I used your splits gist as an example for Test::Lab github.com/MadcapJake/Test-Lab/blo...splits.pl6 20:41
20:41 Zero_Dogg left
AlexDaniel MadcapJake: great 20:42
20:42 Zero_Dogg joined, Zero_Dogg left, Zero_Dogg joined
llfourn ok I got something passing tests and say (require IO::Socket::SSL) works 20:42
MadcapJake c turned out to be the fastest
RabidGravy llfourn, the actual case is something weird about IO::Socket::SSL 20:43
20:43 sufrostico left
RabidGravy it doesn't do it with other modules 20:43
require IO::Socket::SSL; say 42; say (try require IO::Socket::SSL); 20:44
42
Nil
llfourn RabidGravy: it might be unit IO::Socket::SSL + the fact it has :: in the name
but that's a wild guess
RabidGravy perl6 -e 'require HTTP::UserAgent; say 42; say (try require HTTP::UserAgent);'
42
(UserAgent)
MadcapJake i could probably take the assignment logic out and place the entire lab inside a sub that returns the list contents.
20:44 dfcarpenterak left 20:45 Ven joined
RabidGravy well more than one :: 20:45
llfourn RabidGravy: but actually I think you're right
AlexDaniel MadcapJake: interesting!
llfourn it's nothing to do with thtat
20:46 dfcarpenterak joined
RabidGravy nope another module with two :: in the name works fine 20:47
20:47 musiKk joined
sortiz hm.. 20:47
RabidGravy so IO::Socket::SSL is doing something odd
sortiz RabidGravy, Which other module? 20:48
AlexDaniel MadcapJake: I'm surprised to see a significant difference between b and d. By the way, how many times does it run each of them? 20:49
sortiz Asking 'cus in the IO::Socket:SSL case IO::Socket isn't a stub 20:50
RabidGravy Audio::Taglib::Simple and Test::Util::ServerPort I've tried
MadcapJake I only did one run, but it's trivial to wrap and then aggregate the results. i'll give it a go now
llfourn github.com/rakudo/rakudo/pull/715 # fix is here
MadcapJake (the module is designed to be used in production, btw, so it's intended to gather true load performance and data anomalies) 20:51
lizmat llfourn: you're sure that's spectest clean ? 20:52
llfourn lizmat: it's require.t clean
lizmat llfourn: ok, I'll try to spectest in a mo then 20:53
llfourn lizmat: ok me too :)
ugexe m: class Bar { has Str:D $.id = self.id; method id { "1" }; }; class Foo is Bar { has Str:D $.id is required; }; Foo.new.say
camelia rakudo-moar 6159b5: OUTPUT«Type check failed in assignment to $!id; expected Str:D but got Str:D␤ in block <unit> at /tmp/S157w_QnqF line 1␤␤»
RabidGravy llfourn, that returns Nil always? 20:54
llfourn RabidGravy: you're refering to REQUIRE_IMPORT? 20:55
RabidGravy: it used to not to that's why we got those annoying sink errors
RabidGravy oh I see, it returns the lookup from require 20:56
sortiz llfourn, with $longname defined $target_package can be $target_package := $longname.name_past, no?
llfourn well that's how I just had it
sortiz: yep good catch
it's a temp fix so $longname is going away again hopefully
20:57 wamba left
llfourn I just put it back so I could restore previous behaviour 20:57
sortiz Understood. 20:58
RabidGravy confused again
llfourn RabidGravy: I *wanted* REQUIRE_IMPORT to return the value for require and that's what my previous patch did. But I couldn't get IO::Socket::SSL to return from it so I restored the original Actions.nqp lookup thing and made it return Nil. 20:59
RabidGravy right, that's what I thought 21:00
llfourn once these spectests pass I'll try and figure out why the declaration unit class IO::Socket::SSL doesn't show up in the the IO::Socket::SSL's GLOBALish. 21:01
21:01 _mg_ joined
RabidGravy all good 21:02
21:02 sufrostico joined
llfourn lizmat: it's spectest clean 21:03
21:03 cdg joined
dalek kudo/nom: 6e47e54 | LLFourn++ | src/ (2 files):
Temp fix for say (require IO::Socket::SSL)

restoring how require's return value used to be calculated before f565f80a4 while investigating.
21:03
kudo/nom: bb9ca8c | lizmat++ | src/ (2 files):
Merge pull request #715 from LLFourn/nom

Temp fix for say (require IO::Socket::SSL)
21:04 geraud joined
RabidGravy re-tests the modules with that 21:08
I'm doing a fair bit of on-demand loading of modules in a couple of thongs 21:09
er things
MadcapJake AlexDaniel, here's a 100 sample result github.com/MadcapJake/Test-Lab/blo...splits.pl6 (i think the sort is a bit off for some reason...)
21:09 _dolmen_ left
llfourn ./perl6-m -Ilib -e 'use CompUnit::Util :load; say load("IO::Socket::SSL").handle.globalish-package.WHO.keys;' 21:11
(NQPMatch NQPCursorRole OpenSSL NativeCall HLL QRegex QAST NQPCursor NQPRegexMethod Find NQPRegex)
so yeah it never gets into GLOBALish 21:12
something to do with native call?
Skarsnik well ssl use NC probablty 21:13
RabidGravy more likely that IO::Socket is already in the setting
llfourn RabidGravy: that's it!!!
now the question...is that a bug?
I think it is. Everything the module intends to merge should be in globalish right? 21:14
RabidGravy I'd say that would be the expectation
llfourn but how does use IO::Socket::SSL even work if it's not in GLOBALish -- use uses GLOBALish.
21:15 kjs_ left
llfourn perl6 -e 'use IO::Socket::SSL; say IO::Socket::SSL' works so that's odd 21:15
21:16 virtualsue left
RabidGravy is it because it looks up the antecedent IO::Socket and it adds it to that rather than a local stash? 21:17
sortiz I think that.
dalek kudo/nom: ec96785 | lizmat++ | src/core/Buf.pm:
Streamline Buf.push|append

  - fix error message for lazy lists (mentioned 'push' instead of 'append')
  - make .push|append(4,5) about 1.5x faster
  - make .push|append(@a) about 7x faster
  - make .append(4) about 90x faster
This should also make pack quite a bit faster
RabidGravy lizmat++, that should help something I was playing with 21:18
21:18 ELBeavers is now known as ELBeavers_away, ELBeavers_away is now known as ELBeavers
llfourn RabidGravy: but wouldn't IO::Socket::SSL add itself to IO::Socket:: at its own compile time so how did it stick around... 21:18
21:19 firstdayonthejob left
llfourn if it's precomped that shouldn't work I would have thought but it seems to 21:19
lizmat m: dd Buf.new.append(2) 21:20
camelia rakudo-moar bb9ca8: OUTPUT«Buf.new(2)␤»
lizmat hmmm... maybe i broke that 21:21
21:22 firstdayonthejob joined
Skarsnik if you broke something blame spect test for allowing you to break it! 21:23
jnthn m: my @a; dd @a.append(2) 21:24
camelia rakudo-moar bb9ca8: OUTPUT«Array @a = [2]␤»
21:24 _nadim left
jnthn append/push return the thing pushed onto 21:24
lizmat spectested clean though :-( 21:25
fixing now
jnthn Yeah
And let's add tests
lizmat m: dd Buf.new.push(1)
camelia rakudo-moar bb9ca8: OUTPUT«1␤»
jnthn We should really look a bit further into coverage analysis...
lizmat jnthn: that's also wrong, eh ? 21:26
jnthn Yeah
Probably should check native arrays too
lizmat ok, that will slow down stuff a bit :-(
yeah, next on my list
jnthn Don't worry
I'd hope these will be good inlining candidates 21:27
lizmat yeah, they're small
jnthn And then it'll fall to dead code elimination
Which needs moving *after* inlining
Somebody should do some work on spesh... :-)
sortiz
.oO( I don't even known what "spesh" is )
21:29
21:30 shicheng left
llfourn sortiz: My understanding is that it's a thing that inlines stuff at runtime in MVM. jnthn++'s creation. 21:31
RabidGravy It's the magic thing the optimisation fairies do
llfourn though my understanding is often not reality as today has shown :D
sortiz Lol
jnthn It's from the word "specialization", but I didn't want to write that all the time, and if I called it "spec" it'd be confusing. :) 21:32
Largely because the big picture of MoarVM's optimization approach is that it looks for the static behaviors in your dynamic code, and generates specialized code that ploughs through those static things with a load less checking. 21:33
sortiz For inlineing(sp?) something we need to know if the methods called are pure and the args constants, I suppose, no?
21:34 atweiden joined, espadrine joined, TEttinger joined
jnthn sortiz: No, we can do quite a lot better than that. 21:34
sortiz: Though for some of the "better than that" cases we can only do them because we can uninline too.
(That is, if we learn that one of the things the inlining was based on just changed underneath us, we can rewrite the call stack to look like it would have done if we didn't inline, and continue on safely) 21:35
That's one case of the more general deoptimization principle. 21:36
dalek kudo/nom: 0054aa7 | lizmat++ | src/core/Buf.pm:
Make sure we return self for Buf.push|append
jnthn Which means we can enter into specialized code, and cope with discovering half way through that its assumptions got invalidated and drop back to the slow path again. 21:37
21:37 sno joined, kjs_ joined
llfourn jnthn: interesting. What's a common de-optimization scenario? 21:37
sortiz Ok, I need to study that area in detail, some literature that you recommends?
jnthn llfourn: Mixins (does/but) always result in it at the moment, because they can cause objects to change type "at a distance" 21:38
llfourn cool thanks. 21:40
jnthn llfourn: Another example would be that we have code doing divisions on Rats and we see the result is nearly always Rat. We might then generate code that assumes Rat, and speculatively inlines stuff based on that. But if there's a big value and we fall back to Num, then we'd trigger deopt there too. 21:41
Though those two differ. In MoarVM we call the first global deopt 'cus it affects potentially all optimized callframes on the stack, whereas the latter is local deopt, because we know it only affects the current callframe.
llfourn hmm that is very clever. once it de-opts, does it try to optimize again from there? 21:42
or just backs away for the rest of execution
lizmat jnthn: I'm surprised by the difference in behaviour between native arrays and non-native arrays: 21:44
m: my @a; @a.append([1,2,3],[4,5,6]); dd @a
camelia rakudo-moar ec9678: OUTPUT«Array @a = [[1, 2, 3], [4, 5, 6]]␤»
lizmat m: my int @a; @a.append([1,2,3],[4,5,6]); dd @a
camelia rakudo-moar ec9678: OUTPUT«array[int].new(1, 2, 3, 4, 5, 6)␤»
lizmat jnthn: aka, the native case is flattening 21:45
21:45 musiKk left
jnthn sortiz: Quite a few papers out there, of note those on JIT compilation by Craig Chambers et al are quite interesting. 21:46
AlexDaniel lizmat: O_O 21:47
skids Well, it would be kind of hard for a native array to store the non-flattened result :-)
jnthn lizmat: I suspect "didn't get tweaked in the GLR"...
lizmat ok, lemme see if I get spectest fails if I remove the flattening 21:48
jnthn sortiz: The spesh codebase in Moar isn't too terribly inaccessible
sortiz jnthn, Tnks, annotated.
jnthn sortiz: graph.h is the place to start reading
AlexDaniel skids: it does not mean that it should silently flatten it 21:49
skids Oh I know.
jnthn llfourn: For the rest of the callframe it tends to back away
llfourn: It'll try the specialized code again on future calls though 21:50
lizmat plugs the P6W again, just in case: p6weekly.wordpress.com/2016/02/15/...ersioning/
llfourn jnthn: ah nice. I will consult sauce for future investigations. Thanks.
sortiz The native case is using VMArray. 21:51
lizmat seems github is down 21:52
llfourn sees github working
sortiz too 21:53
pmurias LLVM now has a JVM backend: github.com/graalvm/sulong ;)
lizmat status.github.com has some interesting graphs
21:54 _dolmen_ joined
geekosaur again? 21:56
21:56 sno left 21:58 skids left 21:59 dfcarpenterak left, dfcarpenterak joined
lizmat "We're working to mitigate a DDoS attack affecting github.com performance." 22:00
22:00 Vitrifur left 22:01 pmurias_ joined, cognominal joined, FROGGS left 22:02 Laurent_R left 22:04 pmurias left
hoelzro too many people using the new issue templates =P 22:04
lizmat m: my int @a = ^Inf # LTA error message 22:05
camelia rakudo-moar ec9678: OUTPUT«This type cannot unbox to a native integer␤ in block <unit> at /tmp/OuG0Nuu8m3 line 1␤␤»
hoelzro is it because it's too large for a native int?
lizmat well, array.STORE has special handling for Ranges, but does not check on the bounds being ints 22:06
sortiz m: my int @n; say @n.REPR; my @a; say @a.REPR
camelia rakudo-moar ec9678: OUTPUT«VMArray␤P6opaque␤»
sortiz lizmat, VMArrays slots are flat. 22:07
lizmat yes, I know :)
it's about the error message
22:07 sno joined
RabidGravy all modules pass (again again) 22:08
lizmat RabidGravy++ # checking!
will look at native array issues tomorrow
sortiz No, I thinking about how to remove the flattening...
22:09 firstdayonthejob left 22:10 prammer joined 22:12 firstdayonthejob joined
sortiz .oO ( A p6opaque of VMArrays? Upgraded as soon as it has inner array... ) 22:13
22:16 shicheng joined 22:19 _mg_ left
sortiz m: my @a = Array[array[int]].new(array[int].new(1, 2, 3), array[int].new(1, 2, 3)); say @a; dd @a # Seems flat but isn't 22:23
camelia rakudo-moar 0054aa: OUTPUT«[1 2 3 1 2 3]␤Array @a = [array[int].new(1, 2, 3), array[int].new(1, 2, 3)]␤»
sortiz needs some coffe 22:24
22:25 raiph joined 22:27 Ven left 22:28 Ven joined 22:29 corbyhaas_ left, Ven left
lizmat jnthn: what is our standpoint on adding another Exception class to 6.c ? 22:29
22:31 ocbtec left
Hotkeys in regex does « and » function the same as << and >>? 22:33
as word boundaries
lizmat jnthn: I'm thinking of adding a X::CannotCoerceToNativeInt exception class, to change "This type cannot unbox to a native integer" to a more meaningful error
llfourn guesses that that's fine with tests for X::CannotCoerceToNativeInt going into 6.c.1 spec 22:35
hoelzro lizmat++ # better errors
atweiden m: sub mkpositional(Positional $container is rw, :$value) returns Any { $container = $value; $container; }; my Positional $a; my @b = mkpositional($a, :value('zero', 'one', 'two')); @b.perl;
camelia ( no output )
atweiden m: sub mkpositional(Positional $container is rw, :$value) returns Any { $container = $value; $container; }; my Positional $a; my @b = mkpositional($a, :value('zero', 'one', 'two')); say @b.perl;
camelia rakudo-moar 0054aa: OUTPUT«[("zero", "one", "two"),]␤»
atweiden anyone know why @b isn't qw<zero one two>?
llfourn atweiden: it looks like it is? 22:36
lizmat atweiden: named parameters are always containerised ?
llfourn oh you mean just a list
atweiden: return |$container 22:37
moritz m: sub f(:\a) { }
camelia rakudo-moar 0054aa: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Zfjowh3kRQ␤Missing block␤at /tmp/Zfjowh3kRQ:1␤------> 3sub f(:7⏏5\a) { }␤»
llfourn or make it @container
22:40 n0tjack left, ely-se left
dalek kudo/nom: e3b1dd3 | lizmat++ | src/core/Buf.pm:
Oops, forgot to remove one --> Nil
22:43
lizmat is too tired 22:44
good night, #perl6!
sortiz 'night lizmat
22:44 _dolmen_ left
llfourn o/ 22:44
22:51 sufrostico left
atweiden llfourn: thanks for the |$container tip 22:53
jnthn lizmat: How is that "adding it to 6.c"? 22:55
Does changing it regress a spectest that passed in 6.c?
Ah, too late, you went for rest :)
22:56 kjs_ left
llfourn atweiden: Nw. Yes, if you return a list in a $ variable and assign the result to an array you will get an array with one element containing that value (the list). 22:56
jnthn Maybe the question is "is it OK to put the exception type into CORE.setting, not CORE.6.d.setting"...
I think pragmatically "yes" because it needs to be visible by methods, and those evolve in-place. 22:57
General exception policy is that untyped is allowed to go to typed (I tried to prepare for that by removing tests against X::AdHoc from roast)
Maybe we should call CORE.setting "the base setting" or "the unversioned setting" or so, because every time I hear it referred to as 6.c it confuses me. ;-) 22:58
Hotkeys can I capture the number of times a general quantifier is done in a regex?
like / a ** 2..* /
llfourn atweiden: putting a | in front turns the value into a Slip, which will faltten the $ variable out so the expression will return many values (the contents of the list) 22:59
Hotkeys is there an easy way rather
jnthn Hotkeys: Do you have a strong reason not to capture and then just numify the list of captures?
Hotkeys oh
I suppose I could
jnthn m: 'aaaa' ~~ / (a) ** 2..* /; say +$0
camelia rakudo-moar e3b1dd: OUTPUT«4␤»
Hotkeys slap forehead
jnthn Well, it's kinda a reasonable question if you were in a tight performance/memory situation and didn't want to capture, but... :-) 23:00
(As in, it's reasonable to be looking for soemthing *other* than the capture approach in that case...)
Hotkeys is there another good option in that case? 23:01
jnthn Sorta 23:02
m: 'aaaa' ~~ / :my $i = 0; [ a { $i++ } ] ** 2..* { make $i } /; say $/.made # one variant on the theme 23:04
camelia rakudo-moar e3b1dd: OUTPUT«4␤»
Hotkeys neat 23:05
I never think about mixing code in regexes
jnthn Yeah, it's powerful *but* make sure you consider backtracking.
23:08 wamba joined
jnthn REST time; PUT /bed :-) 23:14
sortiz 'night jnthn
llfourn 'night
23:15 skids joined 23:27 pmurias_ left 23:28 Juerd joined 23:31 spider-mario left 23:32 SCHAAP137 left 23:33 sufrostico joined 23:34 prammer left
llfourn RabidGravy, sortiz you're both right. Interestingly when you load IO::Socket::SSL (even before globalish has been merged) you get SSL under CORE::IO::Socket::SSL. 23:36
sortiz llfourn, Good to know. In fact that is more efficient IMO 23:40
23:40 jack_rabbit joined
llfourn sortiz: though it means you can't introspect the compunit for what it is merging into globalish. 23:41
it just "happens" when you compunit is loaded.
RabidGravy I'm sure it's not going to be the only thing that hooks under an existing package like that 23:42
sortiz llfourn, But can be tested, if the parent are not a stub, just search for in it. 23:43
llfourn RabidGravy, sortiz elaborate on both those statementsif you can :) 23:44
RabidGravy well, I made IO::Path::Mode which the same happens to, the is an IO::Path::More too, and I can foresee IO::Socket::* stuff 23:45
llfourn RabidGravy: oh right yep my CompUnit::Util does the same thing now that you mention it. 23:47
skids has X::Protocol
llfourn I'm wondering if I can dream up a patch that lets us have our cake and eat it too. Have the stuff you load go into the Core::Whatver::Thing package but also be in globalish for introspection purposes. 23:49
RabidGravy presumably there is a point in the process where it checks to see if there is an antecedent stash to use and if so just sticks it there otherwise icreate the packages 23:51
so if what we think is happening then it probably happens for any Foo::Bar where a Foo exists 23:53
not just for core 23:54
llfourn yep exactly I have found that bit (I think). It does a normal $*W.find_symbol() and attaches it. 23:55
it calls $*W.install_package where I think is where that happens. 23:56
food &
RabidGravy sleep
toodles
llfourn night
sortiz night llfourn 23:57
llfourn I'm in australia it's 11am for me :D
was saying night to rabid.
but good night sortiz if you are going to bed :)
sortiz No yet, but thanks, I'm in méxico 23:59