»ö« 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.
BenGoldberg s: &trait_mod:<handles>, :(Attribute:D, $thunk); 00:03
SourceBaby BenGoldberg, Ehhh... I'm too scared to run that code.
yoleaux 01:31 EST <sammers> BenGoldberg: thanks, I will take a look into %CALLER
BenGoldberg s: &trait_mod:<handles>, :(Attribute:D, $thunk)
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Sub, Signature); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
BenGoldberg s: &trait_mod:<handles>, (Attribute, Any) 00:04
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Sub, List); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
BenGoldberg s: &trait_mod:<handles>, \(Attribute, Any)
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Could not find candidate that can do \(Attribute, Any)␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 37␤ in block <unit> at -e line 6␤␤
BenGoldberg s: &trait_mod:<handles>, \(Attribute, Pair)
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Could not find candidate that can do \(Attribute, Pair)␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 37␤ in block <unit> at -e line 6␤␤
Geth doc: e75855c412 | (Will "Coke" Coleda)++ | doc/Type/Signature.pod6
remove trailing whitespace
00:05
doc: d70c7eb92e | (Will "Coke" Coleda)++ | doc/Language/operators.pod6
fix typos
doc: e63d2e1662 | (Will "Coke" Coleda)++ | doc/Type/Signature.pod6
Avoid duped sub names

pass compilation test
BenGoldberg s: &trait_mod:<handles>, \(Attribute.new, sub { ... }) 00:09
SourceBaby BenGoldberg, Ehhh... I'm too scared to run that code.
BenGoldberg s: &trait_mod:<handles>, \(Attribute.new, &foo)
SourceBaby BenGoldberg, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Undeclared routine:␤ foo used at line 6␤␤
BenGoldberg s: &trait_mod:<handles>, \(Attribute.new, &say)
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Required named parameter 'name' not passed␤ in block <unit> at -e line 6␤␤
IOninja s: &trait_mod:<handles> 00:16
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/11ee...ts.pm#L359
BenGoldberg m: class A { method foo() { "A" } }; class B { has A $.a handles * }; say B.new(a => A.new).^methods; 00:22
camelia (a)
BenGoldberg was being too specific, wasn't he ;)
Geth doc: bd7a64a207 | (Tom Browder)++ | doc/Type/Str.pod6
correct spelling
00:26
BenGoldberg m: class A { method foo() { "A" } }; class B { has A $.a handles * }; say B.new(a => A.new).^find_method("foo"); 00:30
camelia -> $self, |c is raw { #`(Block|75700104) ... }
Geth whateverable: bbede988f6 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 13 files
Lots of refactoring and other code mangling

This commit introduces some functional changes and some minor code style tweaks.
Issues resolved: #32 #34 #48 #49 #50 #67 #70 #88 #95 #102 #103 #105
... (28 more lines)
00:38
elaADnlxie wonders how many emails were sent by github 00:43
IOninja :O 00:53
* :o
Well, I know how many I got... 0
elaADnlxie 153 people didn't unwatch the repo yet, so… 00:54
m: say 12 × 153 × 2
camelia 3672
IOninja elaADnlxie++ 00:55
I could use some of that hacking juice you're sipping on tonight :) 00:56
Yeah, but I never receive any email from GitHub...
Is receiving it the default?
elaADnlxie I think so
elaADnlxie when you press the watch button 00:56
though when you create a new repo in perl6 org, all members are subscribed automatically 00:57
elaADnlxie IOninja: well, most of these changes were done during my rides in a bus (usually in a standing position, because people will only start to care about me when I get old…), not tonight :) 01:00
IOninja Standing position?... 01:09
Now I'm unsure whether to be more or less impressed...
elaADnlxie yea, I push the laptop with my palms against the lower part of my belly 01:11
this way I can type with both hands and still hold the laptop
IOninja 0.o
elaADnlxie oh yeah, skills you learn because using the public transport for ≈40 minute (one way) rides every day :) 01:12
IOninja I travel the same amount, but even were I sitting it'd be uncomfortable to type because the laptop would be sliding down my lap... 01:14
I can't even picture what typing while standing on a bus looks like :D 01:15
elaADnlxie I'll try to get a picture one day 01:15
IOninja :) 01:17
llfourn m: my @a; @a[@a.elems] := "foo" # any better way to bind the last elem of array? 01:18
camelia ( no output )
llfourn or rather bind to the index after the last element
elaADnlxie .last ? 01:19
.tail?
ah…
yea, that's not writable 01:20
*-1 is not going to work also…
llfourn yep :\
IOninja How come you need to bind? 01:21
llfourn I want to have an array of pointers to scalar variables essentially 01:22
IOninja m: my @a; @a[+@a] := "foo"; say @a
camelia [foo]
IOninja m: my @a; .[+$_] := "foo" with @a; say @a
camelia [foo]
llfourn mm +@a 01:23
Maybe I can do what I want another way. Just checking to see if there was some way of raw pushing containers. 01:24
IOninja llfourn: does it have to be an Array (as opposed to, say, a List)? 01:28
m: my $a = "meow"; my $b = "foo"; my @a := $a, $b; @a[0] = 42; @a[1] = "foooooos"; dd [ $a, $b ] 01:29
camelia [42, "foooooos"]
llfourn yes, this is a mutable array of variable containers :P
IOninja ok :)
IOninja m: my $a = "meow"; my $b = "foo"; sub infix:<♥> (\a, +b) is assoc('list') { a[+a] := $_ for b }; my @a; @a♥$a♥$b; @a[0] = 42; @a[1] = "foooooos"; dd [ $a, $b ] 01:31
camelia [42, "foooooos"]
IOninja hehe :)
Love solves everything! 01:32
llfourn nice <3 01:34
elaADnlxie IOninja: no. Proof: github.com/Love 01:42
BenGoldberg Clearly, love needs love. 01:43
IOninja elaADnlxie++ hah
BenGoldberg Not to mention, love cannot solve the halting problem.
BenGoldberg thinks that's because love is eternal, and as a result, the halting problem is outside of it's problem domain. 01:45
elaADnlxie excuses, excuses… 01:47
BenGoldberg m: my $foo = 32; dd callframe(0) 02:19
camelia CallFrame.new(annotations => {:file("<tmp>"), :line("1")}, my => {"!UNIT_MARKER" => !UNIT_MARKER, "\$!" => Nil, "\$/" => Nil, "\$=finish" => Mu, "\$=pod" => [], "\$?PACKAGE" => GLOBAL, "\$_" => Any, "\$foo" => 32, "\$¢" => Nil, "::?PACKAGE" => GLOBAL, :…
BenGoldberg m: my \foo = 32; dd callframe(0) 02:20
camelia CallFrame.new(annotations => {:file("<tmp>"), :line("1")}, my => {"!UNIT_MARKER" => !UNIT_MARKER, "\$!" => Nil, "\$/" => Nil, "\$=finish" => Mu, "\$=pod" => [], "\$?PACKAGE" => GLOBAL, "\$_" => Any, "\$¢" => Nil, "::?PACKAGE" => GLOBAL, :EXPORT(EXPORT),…
BenGoldberg m: my $foo = 32; dd callframe(0).my
camelia {"!UNIT_MARKER" => !UNIT_MARKER, "\$!" => Nil, "\$/" => Nil, "\$=finish" => Mu, "\$=pod" => [], "\$?PACKAGE" => GLOBAL, "\$_" => Any, "\$foo" => 32, "\$¢" => Nil, "::?PACKAGE" => GLOBAL, :EXPORT(EXPORT), :GLOBALish(GLOBAL)}
BenGoldberg m: my \foo = 32; dd callframe(0).my
camelia {"!UNIT_MARKER" => !UNIT_MARKER, "\$!" => Nil, "\$/" => Nil, "\$=finish" => Mu, "\$=pod" => [], "\$?PACKAGE" => GLOBAL, "\$_" => Any, "\$¢" => Nil, "::?PACKAGE" => GLOBAL, :EXPORT(EXPORT), :GLOBALish(GLOBAL), :foo(Mu)}
BenGoldberg I kinda sort understand why, in the \foo example, it shows up in the hash as :foo(Mu) ... but it's a bit annoying in a way, too. 02:22
BenGoldberg wonders why there is a class named '!UNIT_MARKER'. Is it named that purely to make it hard to fiddle with? 02:25
MasterDuke it's some sort of magic, but gets the name '!CORE_MARKER' if compiling rakudo 02:29
BenGoldberg m: my \foo = 32; say callframe(0).my.grep: /foo/ 02:37
camelia (foo => 32)
BenGoldberg wonders where the Mu went.
BenGoldberg Does anyone know if there's any difference between calling .^methods on a class object vs an instance of the same? 02:48
Str.^methods vs "foo".^methods?
elaADnlxie m: say ("foo" but role { method pewpew {} }).^methods 02:51
camelia (pewpew subst word-by-word tc perl comb ends-with ACCEPTS samespace wordcase indent Numeric index trim-trailing trans codes ord Str split pred ords lc fc NFC indices chars Stringy trim-leading NFD rindex samemark trim NFKC WHY gist starts-with tclc subst…
elaADnlxie BenGoldberg: do you count this as an instance of the same? ;)
BenGoldberg No, because:
m: say ("foo" but role { method pewpew {} }).WHAT 02:52
camelia (Str+{<anon|30686304>})
BenGoldberg m: say ("foo" but role { method pewpew {} }).WHAT === Str
camelia False
elaADnlxie m: say ("foo" but role { method pewpew {} }).WHAT ~~ Str 02:53
camelia True
llfourn m: my $i = 2; $_ = " foo"; s/^\s ** $i//; .say # any way to quantify with a var? 02:55
camelia 5===SORRY!5=== Error while compiling <tmp>
Quantifier quantifies nothing
at <tmp>:1
------> 3my $i = 2; $_ = " foo"; s/^\s **7⏏5 $i//; .say # any way to quantify with a
elaADnlxie m: my $i = 2; $_ = " foo"; s/^\s ** {$i}//; .say
camelia foo
llfourn thx nice one 02:56
Todd need help with zef 03:34
yoleaux 2 Mar 2017 09:33Z <IOninja> Todd: Inline::Perl5 is a Perl 6 module; you install it with `zef install Inline::Perl5` not cpan; it doesn't create "inline" files on your filesystem but installs precompiled units in CUR, so check it's installed with `perl6 -MInline::Perl5`, not grepping your system for files
Todd cd Inline-Perl5 03:35
zef install .
... Can't locate ExtUtils/Embed.pm in @INC
What next?
dj_goku Todd: why not just do: zef install Inline::Perl5 ? 03:36
Todd Too many errors 03:37
What I did was: git clone github.com/niner/Inline-Perl5.git
dj_goku really I just installed it fine.
Todd hen I cd's into the directory
dj_goku what version of perl6 are you on?
perl6 -v 03:38
Todd # rpm -qa rak\*
rakudo-star-0.0.2016.11-1.fc25.x86_64
# perl6 --version
This is Rakudo version 2016.11 built on MoarVM version 2016.11 implementing Perl 6.c.
dj_goku have you tried upgrading?
Todd: I would recommend: github.com/tadzik/rakudobrew 03:39
Todd dnf upgrade rakudo-star and there is a new one! Installing right now
# rpm -qa rak\* 03:40
rakudo-star-0.0.2017.01-1.fc25.x86_64
Todd I am re-zef'ing 03:40
Can't locate ExtUtils/Embed.pm in @INC 03:41
no symptom change. Rats. What now?
MasterDuke do you have that Perl 5 module installed?
Todd no. installing right now 03:42
MasterDuke doesn't redhat break up perl5 into two packages? core one that's almost entirely useless and another one you need to get a functional perl 5? 03:43
Todd rezeffing 03:43
===> Testing [FAIL]: LibraryMake:ver('1.0.0'):auth('github:retupmoca') Aborting due to test failure: LibraryMake:ver('1.0.0'):auth('github:retupmoca') (use --force to override) 03:44
Should I use --force?
uh oh. I have to leave for 30 minutes to handle a family matter. I will leave channel open. Thank yo all for hte help so far. Little by little! 03:46
jeffythedragonsl Hey 03:49
dj_goku MasterDuke: no idea, but this is one reason why I use perlbrew to also install perl5 so I don't have to depend on the system perl.
jeffythedragonsl So I saw the grant to work on IO... and was wondering how hard it is to get one 03:49
MasterDuke dj_goku: i don't use perl5 much on my home machine, so i've been fine just using whatever arch provides 03:52
dj_goku ahh, I haven't needed to in awhile either, but really like I can use perl/rakudo(brew) to install in my home directory 03:53
MasterDuke jeffythedragonsl: samcv has a grant proposal she's going to make this month, her and IOninja are the two most recent people to apply for Perl 6 stuff i believe 03:54
jeffythedragonsl I mean who do they give grants to 03:55
How do they decide what needs to be done 03:56
MasterDuke that i don't know. but i think lizmat is on the grant board. and [Coke] is also involved somehow. i guess ask them? 03:57
jeffythedragonsl I don't think I have the time or knowledge to be any big help, other than writing new scripts in p6 03:58
But that is all very interesting 04:00
MasterDuke i can't speak to time, but i don't think you don't need all that much knowledge to start contributing 04:04
elaADnlxie don't they have some problem with the lack of money right now? 04:06
anyway, here's a WAT 04:07
m: my regex meh($t) { xy }; say 'xy' ~~ /^ <meh(42)> $/
camelia 「xy」
meh => 「xy」
elaADnlxie m: my regex meh($t) { xy }; say 'ab' ~~ /^ <meh(42)> $/
camelia Nil
elaADnlxie m: my regex meh($t) { .. }; say 'xy' ~~ /^ <meh(42)> $/ 04:07
camelia 「xy」
meh => 「xy」
elaADnlxie m: my regex meh($t) { .. }; say 'xyz' ~~ /^ <meh(42)> $/
camelia Too few positionals passed; expected 2 arguments but got 1
in regex meh at <tmp> line 1
in block <unit> at <tmp> line 1
elaADnlxie WAT? 04:08
MasterDuke elaADnlxie: it depends on having a parameter in the signature 04:09
m: my regex meh() { .. }; say 'xyz' ~~ /^ <meh()> $/
camelia Nil
elaADnlxie I'll rakudobug this before I go to bed, I guess… but I find this hard to explain 04:10
Todd I am back. I am trying --force to see what happens 04:23
perl6 -MInline::Perl5 04:25
gave me somethign weird
You may want to `zef install Readline` or `zef install Linenoise` or use rlwrap for a line editor
elaADnlxie OK, RT #130910 04:26
night
dj_goku Todd: did you look at rakudobrew by chance? 04:30
Todd would someone throw a "perl -e -MInline::Perl5 'do something in perl 5'" for me to test if --force worked?
dj_goku Todd: I would recommend using rakudobrew vs your os package manager: github.com/tadzik/rakudobrew 04:33
Todd I am looking at rakudo.org/how-to-get-rakudo/#Insta...Rakudobrew 04:34
that the best place?
dj_goku did you not see the link I posted?
github.com/tadzik/rakudobrew
Todd yes I missed that. What will rakudobrew do for me? 04:35
dj_goku Todd: hopefully circumvent all the problems you are currently having. 04:36
:D
Todd by?
dj_goku no using your os package manager? or OSes perl? 04:37
not using*
Todd on other packages where I have had to do that, such as Wine-Staging, it wa a total pain in the *** to hunt down and find all the OS's packages. The "rom-e" missing some things and leaves others in tact. So yo wind up with fractons of one versinos conflicting with the new version you install manually (make install", especially since the manual method always uses different paths (/opt vs /usr/bin vs /usr/share/bin) that it can be a bit of 04:40
So, unless force to, I have to stick with the OS's package manager (dnf). 04:41
dj_goku Todd: rakudobrew is self-contained to ~/.rakudobrew you delete that directory and you no longer have rakudobrew
Todd Oh I made a lot of typos in that, i hope everyone can still understand it
dj_goku I have no experience with redhat so either you try rakudobrew and I can help or you are on your own and hopefully someone else here can help you. 04:42
Todd I think I still don't understand how it works 04:44
dj_goku Todd: you clone rakudobrew repo, you export the PATH, run the command rakudobrew init, then you run rakudobrew build moar to install moarvm then you run, rakudobrew build-zef, then you'll run zef install Inline::Perl6 04:46
just follow the installation instructions on the rakudobrew page
Todd: after all that you have perl6 moarvm and you can start playing with perl6 instead of trying to figure out your operating system. 04:48
Todd implementing suggestin right now
It is running. I thing INline ihas already been installed. "perl6 -c" is no longer throwing errors on it 04:50
rakudobrew build moar
Configuration FAIL. 04:51
# rakudobrew build-zef rakudobrew: No version set.
dj_goku can you post the log to a pastebin?
Todd how do I do that? 04:54
dj_goku pastebin.com
Todd I just ran the test from github.com/niner/Inline-Perl5 04:57
dj_goku so did you get rakudobrew installed? 04:58
Todd And although it could not conenct to the database, it did show that the Inline module was working. So for now, I am happy.
Todd use Inline::Perl5; 05:09
use Term::ANSIColor:from<Perl5>;
print ( Term::ANSIColor::RED ~ "Red\n" ); 05:10
Could not find symbol '&RED'
How do I use the Constant from Perl5 here?
samcv well there is a Terminal::ANSIColor plugin native perl 6 05:20
not sure about constants
Todd Acutally, I was looking for a demonstration for my keepers file of how to use inline 05:21
samcv ah 05:22
Todd This worked: 05:24
use Inline::Perl5; my $i = Inline::Perl5.new; print ( $i.call( 'Term::ANSIColor::RED' ) ~ "Red\n" ~ $i.call( 'Term::ANSIColor::RESET' ) );
Todd Still not understanding why 05:28
use Term::ANSIColor:from<Perl5>;
Todd doesn't work 05:28
signing out for the night, I hope. Thank you all for the help! 05:34
ZzZombo m: use Inline::Perl5;use Term::ANSIColor:from<Perl5>;say Term::ANSIColor::RED ~ 'NYA'; 05:58
camelia 5===SORRY!5=== Error while compiling /home/camelia/site#sources/FC133D3E7EC3B0CBE238C296893894C9AB745A05 (Inline::Perl5)
An exception occurred while evaluating a constant
at /home/camelia/site#sources/FC133D3E7EC3B0CBE238C296893894C9AB745A05 (Inl…
ZzZombo m: use Inline::Perl5;use Term::ANSIColor:from<Perl5>;say Term::ANSIColor::RED,'NYA'; 05:59
camelia 5===SORRY!5=== Error while compiling /home/camelia/site#sources/FC133D3E7EC3B0CBE238C296893894C9AB745A05 (Inline::Perl5)
An exception occurred while evaluating a constant
at /home/camelia/site#sources/FC133D3E7EC3B0CBE238C296893894C9AB745A05 (Inl…
TimToady probably needs Term::ANSIColor::Red() up there 06:06
moritz good morning 06:29
sjn good *, moritz & #perl6 :) 06:30
masak morning 06:42
it's time to name another type of joke. naming suggestions welcome.
I will provide two examples of the type of joke:
"Never let your sense of morals prevent you from doing what’s right." -- Isaac Asimov
"Never let school get in the way of getting a good education." -- (who?) 06:43
feels like the latter would be Mark Twain or Ambrose Bierce 06:46
wow, Rob Pike got the question on a /. AMA 'Given the nature of current operating systems and applications, do you think the idea of "one tool doing one job well" has been abandoned?' 06:49
and he replied 'Those days are dead and gone and the eulogy was delivered by Perl.' 06:50
jeek Those days are dead and gone and the eulogy was delivered by Perl. 06:55
Rob Pike (2004) in interview at slashdot.com, Oct 18 2004
masak yep
haven't thought of it that way, that Perl killed off the "one tool for one job" idea
I wonder if Emacs could be said to have done the same thing? 06:56
samcv morning/night/etc everyone 07:16
Woodi_ hallo #perl6 :) 07:19
samcv hi Woodi_ 07:20
Woodi_ re one tool - one job and Perl: there is some truth in this but also such simplicity is irreplecable. just rality work that way, we sometimes need small hammer and sometimes pnumatic press 07:23
that's why multituls didn't replaced specialized tools :)
TimToady well, Perl was intended to be more like a machine shop anyway 07:25
Woodi_ *multitools. but having such device all the time on you is great time saver :) also almoust any answer can work in 80% of cases... just in ~5% you create mortal enemy for yourself :)
Woodi_ btw. we live in Unix parts replacement times :) systemd, C under attack... 07:29
Perl6 ? ;)
nine moritz: not yet 07:37
Woodi_ masak: "never good jokes" ? ;) problem is that morals can be ill-formed or what's-right be disinformed... 07:39
nine moritz: though experience with Perl 5's Inline::Python shows that it'd be relatively simple to add. The differences on the C side are quite limited. 07:43
TimToady masak: maybe something like 'territory map' jokes, where the funny comes "the territory is not the territory, because you forgot that your territory is just a map' 07:44
TimToady so they're re-map-mapping or map-remapping jokes, if you want a self-referential meta definition :) 07:51
or maybe just 'remapping' jokes for short
both in the sense of re-installing the map to the territory, and also in the sense of changing the denotations to the connotations of the words involved 07:53
sjn masak: maybe "system vs. reality" jokes?
TimToady *changing the mapping of the
sjn or plan vs. reality, if one thinks of the military
TimToady that's kind of what I was getting at, with the addition that the system has to be moved from being perceived as accurate to faulty 07:55
sjn yep. :)
TimToady and part of the funniness comes from doing the redefinition retroactively 07:56
sjn thinks about that joke where a military vessel harshly orders a lighthouse to move away from it's course :) 07:57
TimToady so they're really in the category of garden path sentences
or, to use a self-descriptive phrase, they're garden pathological. :) 07:58
RabidGravy boo! 08:13
RabidGravy there isn't any way to parameterise a class definition like "class Foo[something] { ... }" is there? 08:22
the grammar seems to suggest not 08:23
there's no particular technical reason why I want to do it, it's more an aesthetic thing 08:26
Woodi_ RabidGravy: what "something" caould be ? a type ?
*could 08:27
RabidGravy a type (or types in my actual case,) but anything that you can have with a parameterised role for example 08:28
Woodi_ m: use MONKEY-SEE-NO-EVAL; sub c(Str $s) { my $t = 'class Foo { has TMPL $!f }';$t ~~ s/TMPL/$s/; say $t; return EVAL $t }; c("Int"); 08:40
camelia class Foo { has Int $!f }
RabidGravy :-\ 08:44
Woodi_ RabidGravy: I bet slang doing what you want will be doing such evals :) 08:48
Todd Hi All, question on Inline::Perl5's "run" feature. how do I get my Perl 6 variable inside of a "run"? 08:57
RabidGravy you know that the TODO list is going out of control when you look at your browser tabs, wonder why you have some open, and remember the code you started implementing something
Todd #!/usr/bin/perl6 08:58
use Inline::Perl5;
my $p6str = "string from Perl 6";
my $perl5 = Inline::Perl5.new();
$perl5.run(' print $p6str . "\n\n"; ');
$p6str prit out empty 08:59
RabidGravy well yes
the simplest way would be to interpolate
Todd What does that mean? 09:00
RabidGravy $perl5.run(qq{ print $p6str . "\n\n";}');
Todd here is the example I was looking at: gist.github.com/araraloren/b33529c...236d9b6c7c
I will try the qq{}
RabidGravy (other alternative quoting mechanisms are available) 09:01
Todd Number found where operator expected at (eval 7) line 1, near "Perl 6" (Do you need to predeclare Perl?)
qq{} did not work. 09:02
RabidGravy yes it did
you just need more double quotes 09:03
that is a perl 5 error
Todd where? 09:04
RabidGravy $perl5.run(qq{ print "$p6str \n\n";}')
Todd $perl5.run(qq{ print $p6str . "\n\n"; });
araraloren '' not support interpolate
RabidGravy yes
the value of $p6str needs to be quoted 09:05
Todd $perl5.run(qq{ print "$p6str\n\n"; });
araraloren m: my $p6str = "123"; "print $p6str \n\n".say
camelia print 123

Todd worked. I get it. It thinks $p6str is a function if I don't 09:06
araraloren m: my $p6str = "123"; 'print $p6str \n\n'.say; qq{print "$p6str\n\n"}.say
camelia print $p6str \n\n
print "123

"
Todd thank you!!! 09:07
araraloren maybe you should refer this, learnxinyminutes.com/docs/perl6/ 09:08
Todd I have that one. Thank you! 09:09
Todd Got another Inline::Perl5 question 09:12
#!/usr/bin/perl6
use Inline::Perl5; use Term::ANSIColor:from<Perl5>; 09:13
my $Red = Term::ANSIColor.RED; my $Reset = Term::ANSIColor.RESET;
print ( $Red ~ "--Red--" ~ $Reset ~ "\n\n" );
Todd the print out is indeed red, but it prints out the words "Term::ANSIColor" as well as accepting the color command. Same thing on reset too 09:14
Term::ANSIColor--Red--Term::ANSIColor 09:16
it is red up to and including the second set of -- 09:17
Todd that learn in minutes is sweet! 09:25
RabidGravy Todd, for reference there is actually a Perl 6 Term::ANSIColor (and a Terminal::ANSIColor - what's all that about?) 09:44
RabidGravy has another go at making a binding to poll(2) work 09:47
Todd Oh I do know and use it a lot. What I am doing is creating a sample program showing several different ways of doing Inline::perl5 for my internal use. The idea is to be able to reference it when I forget how to use it
RabidGravy right
Todd I was basically looking for things I knew where Perl 5 only 09:48
Todd This is all leading up to me writing a sub to collect up two log fiels, place them into a tar ball, then attach them to an eMail with Perl 5's eMail::Simple 09:50
No such critter exist for Perl6 yet
I will probably hammer away using Inline::Perl5's "run" module with qq{} 09:51
timotimo but why?
Todd And, believe me, I'd rather be done with Perl 5 for good. the @_ metod of pasing variables to subs drives me nuts. I is like a high level language suddenly decided to inject some assembly code. I am writing in a High level language for a reason! 09:52
timotimo but still, why use "run"? 09:57
Todd because I can code the whole thing in p5 inside the run. Take a look over at gist.github.com/araraloren/b33529c...236d9b6c7c 09:58
RabidGravy there is an Email::Simple for Perl 6 09:59
Todd lines 86 to 156
RabidGravy it may need some love but it definitely exists
Todd It doesn't take attachments at this time . Sniffle! 10:00
And I am not up to MIME::Base64
RabidGravy well it's open source and everything, I'm sure it can be fixed to do that
Todd I am no wher near capable of doing that, so i have to rely on the kindness of other fars better than I 10:01
and Inline::Perl5 Sniffle!
Todd Got to call it a night. Thank you all for the help! 10:09
RabidGravy anyone got a clue as to why gist.github.com/jonathanstowe/98ea...738bd79577 segfaults? Total mystery to me, everything seems to be the right size 10:10
Todd I posted the last question over on the mailing list if anyone figures out the answer 10:10
timotimo what actually happens when we have "is rw" on a CArray parameter? 10:11
RabidGravy dunno, but that doesn't actually make any difference 10:12
timotimo OK
RabidGravy the poll call writes into the structs in the array
so in theory it should set revents 10:13
but it seems to mangle the array
timotimo it's crashing while it's trying to get an int value out of a CStruct
RabidGravy yes 10:14
timotimo need a less optimized moar 10:15
RabidGravy the array element is defined (and is a PollFD) after the call but it broken 10:15
timotimo wait 10:16
what does poll expect the array to look like?
RabidGravy oh yes 10:17
it's a flat array isn't it, not an array of pointers
boo
timotimo NativeCall doesn't have flat arrays yet
not without doing magic with nativecast 10:18
RabidGravy yeah, this is me being stupid and reading the C signature wrong
didn't sortiz do something around this? 10:21
timotimo we have a module, yeah 10:22
RabidGravy github.com/salortiz/NativeHelpers-...Struct.pm6 ? 10:24
timotimo i think that's the one 10:25
RabidGravy wahay! 10:38
IT LIVES!
RabidGravy there gist.github.com/jonathanstowe/98ea...738bd79577 10:44
timotimo mhm
sjn \o 10:48
quick question: how does one introspect slangs? (e.g. the quoting sub-language, to find out which characters can be used to quote stuff)? 10:49
timotimo there's no unified API for that purpose, i don't think? 10:51
llfourn the only thing you could do is ask it what methods it has in it
sjn Well, TimToady's example used $?LANG.grammar.^methods
but that was for methods in general
llfourn (where's this example?) 10:52
sjn something similar for quoting constructs would be brillint
llfourn: ah, I asked this question here a few days ago
llfourn oh ok. I thought there might be some blog post on what's happening in slangs.
IOninja .tell Todd what sort of perl5 you got installed? ExtUtils::Embed was part of it since 5.003007, so it's very strange it can't find it. FWIW, I never had problems with perlbrewed one `\curl -L install.perlbrew.pl | bash; echo 'source ~/perl5/perlbrew/etc/bashrc' >> ~/.bashrc; perlbrew install perl-stable -Duseshrplib -Dusemultiplicity; perlbrew switch perl-stable; perlbrew install-cpanm` 10:53
yoleaux IOninja: I'll pass your message to Todd.
sjn m: $/.Str.say when /^ < pre in post circum> fix ":sym" <( .* / for $?LANG.grammar.^methods».name 10:55
camelia <lambda>
<STATEMENT_LIST( )>
<( )>
<[ ]>
<ang>
«<< >>»
<« »>
<{ }>
<i>
<++>
<-->
<++>
<-->
<ⁿ>
«->»
<**>
<+>
<~~>
<~>
<->
<−>
<??>
<?>
<!>
<|>
<+^>
<~^>
<?^>
<^^>
<^>
<*>
<×>
</>…
sjn llfourn: ^
IOninja .tell dj_goku by default rakudobrew uses whatever random dev commit happened to be HEAD and has several quirks (such as having to run rehash to after install of binaries). Recommending it over properly tested and prepared releases to anyone who walks by is probably not a good idea. 10:56
yoleaux IOninja: I'll pass your message to dj_goku.
llfourn sjn: heh nice
IOninja .tell jeffythedragonsl RE how hard is it to get a grant: the process involves community feedback and committee voting, with two major questions: (1) is the work needs doing; and (2) can this person do it well. They don't charge you for applying, so you can always try, but IMO your chances of succeeding dramatically increase if you can point at a pile of commits you've already contributed, to show what your 11:00
yoleaux IOninja: I'll pass your message to jeffythedragonsl.
IOninja work looks like. 11:00
IOninja .tell jeffythedragonsl work looks like. 11:01
yoleaux IOninja: I'll pass your message to jeffythedragonsl.
IOninja I came up with "Recommended Practices" tidbit while sleeping, if anyone's keeping track of them: always use sigils with your constants 11:03
IOninja Because there's an abiguity between constants and sub calls that don't use parens and constants win. 11:04
m: sub foo { say "hi" }; foo
camelia hi
IOninja ^ normal working code;
m: constant foo = 'lulz fail'; sub foo { say "hi" }; foo
camelia WARNINGS for <tmp>:
Useless use of constant value foo in sink context (line 1)
IOninja ^ some sigiless constant that made way into your code 11:04
And broke it
m: constant $foo = 'lulz fail'; sub foo { say $foo }; foo 11:05
camelia lulz fail
IOninja All's well
llfourn Agreed. Keep 'em comin'. 11:06
RabidGravy yeah, at the very least don't export sigil-less constants :) 11:07
IOninja Not good enough, unless you also `my` them. 11:09
echo 'constant foo = "luls fail"' > Foo.pm6; perl6 -I. -MFoo -e 'sub foo { say "hi" }; foo'
Conflict ^
llfourn yeah I noticed that the other day 11:10
IOninja Well, I guess you can also avoid it by using a `module` or `class`... so yeah.
llfourn constants go into GLOBAL?
m: constant $foo = "bar"; say GLOBAL::.keys 11:11
camelia ($foo)
llfourn :\ I'd rather that weren't the case.
IOninja No, constants are just `our` by default and since there's no package to put them in in that file, the package they use is GLOBAL
It's not as scary as it looks at the first sight :)
RabidGravy m: class Foo { constant foo = "hshs"; }; say foo 11:12
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
foo used at line 1
IOninja Right.
llfourn m: unit module Foo; constant foo = "bar"; note GLOBAL::.keys
camelia (Foo)
llfourn another reason to use 'module' 11:13
IOninja m: my \foo = 'lulz fail'; sub foo { say "hi" }; foo 11:20
camelia WARNINGS for <tmp>:
Useless use of foo symbol in sink context (line 1)
IOninja Well, I guess it's a useless tidbit, 'cause we also got these things -_-
And the lesson would be to use parentheses with subs, but I won't accept it... 11:21
DEATH TO PARENS!
RabidGravy dunno, some places a sub invocation with no arguments is clearer to me with parens 11:24
IOninja Heathen! 11:25
RabidGravy :-p 11:26
right now to turn this poll() malarkey into something that returns a supply that emits whenever the handle is ready 11:27
AND THEN MY PLANS FOR WORLD DOMINATION WILL BE COMPLETE
jnthn RabidGravy: That sounds oddly like something I was doing this week :) 11:29
RabidGravy do tell, maybe I don't have to write this after all :)
jnthn Still a WIP but github.com/jnthn/p6-ssh-libssh 11:30
jnthn I run the event loop on a single thread, and then stick a Promise/Supply API in front of it that hides all the evil away :) 11:31
RabidGravy I *think* my use is somewhat simpler, that is turning a pg-notifies into a Supply 11:35
timotimo mhhh postgres
jnthn I don't know the pg API well enough to speculate...but hopefully :-)
The libssh binding hasn't been too bad so far 11:36
I'd kinda like to add the server parts in
Primarily so I can have self-enclosed tests. 11:37
timotimo suddenly a ssh server that can be used from perl6
RabidGravy github.com/jonathanstowe/DBIishX-P...GNotify.pm - but I was having a senior moment with poll the other day
jnthn timotimo: Yeah, I'm not quite sure what the applications of an SSH server written in Perl 6 would be :P
A client, OTOH, is rather useful :) 11:38
timotimo maybe it's easier than building a server on top of openssl :)
RabidGravy in the past I've used SSH as an IPC transport, having a server cuts out a whole layer of process 11:39
timotimo yeah, though the more processes you have the more fine-grained your failures can be
jnthn RabidGravy: Hmm, interesting. So it might be worthwhile :)
timotimo whether that is a good or bad thing is up to you of course 11:40
jnthn (Beyond for the testing angle)
llfourn m: my @a= 1..3; @a.map: { note $++ }; @a.map: { { note $++; } } # extra curlies clears state variables? 11:42
camelia 0
1
2
0
0
0
RabidGravy (somewhere I've got some utterly crack-induced code which did remote method calls by sending Storable blobs over ssh)
IOninja llfourn: something like that. Basically if it weren't like that, then things like, say, sub foo { for ^10 { say $++ } }; would keep incrementing even between calls to &foo 11:45
sjn o/ jnthn
jnthn: maybe you can help? I'm trying to find out if it's possible to extract which quoting constructs are legal, through introspection :) 11:46
IOninja m: for ^5 { say $++; for ^3 { say "[" ~ $++ ~ "]" } } 11:47
camelia 0
[0]
[1]
[2]
1
[0]
[1]
[2]
2
[0]
[1]
[2]
3
[0]
[1]
[2]
4
[0]
[1]
[2]
sjn just looked at the git blame list, and see that TimToady is the right person to ask
IOninja sjn: I'd say no. 11:48
llfourn IOninja: Thanks :)
IOninja sjn: just looking at a small subset of single and double quotes, they're all kinda hard-coded: github.com/rakudo/rakudo/blob/nom/...3674-L3682
sjn yeah, I'm looking at the same spot 11:49
RabidGravy Lawks a mercy : gist.github.com/jonathanstowe/06f5...f56a62c75a - I don't know what I was on at the time
IOninja And all the adverbial quoters are done by mixing in roles 11:50
sjn isn't it possible to get the actual code/match/regex/whatever from the token itself?
IOninja tries to find it in src/Perl6
It's here and surrounding areas: github.com/rakudo/rakudo/blob/nom/....nqp#L5023 11:51
During parsing adverbs are read and then it assembles role combination that can parse the quoting construct. 11:52
timotimo sjn: you can grab the code object, sure, but it's opaque
IOninja m: say q ⁣look mah, no quoters!⁣ 11:54
camelia look mah, no quoters!
IOninja giggles
timotimo what character is that? 11:56
IOninja Character? There is no character!: )
timotimo u: ⁣
unicodable6 timotimo, U+2063 INVISIBLE SEPARATOR [Cf] (⁣)
timotimo m)
IOninja aww
timotimo what fun 11:57
"I’m very excited to announce that today I’m open-sourcing a tool I’ve been working on for several months at Google. It’s called Bloaty McBloatface, and it lets you explore what’s taking up space in your .o, .a, .so, and executable binary files." 12:02
RabidGravy :) 12:03
ZZ 12:05
timotimo please press ctrl-c to exit vim.
RabidGravy :) 12:08
RabidGravy jnthn, on a completely un-related note what was your envisioned end state for Net::Stomp::Server? A fully functional server or a toolkit from which one could be made? 12:10
jnthn RabidGravy: More the latter; something that gives you a supply of incoming connections, requests, etc. and lets you specify supplies of notifications which can be sent 12:12
RabidGravy: Basically, enough that you can write a really simple in-memory message queue in terms of it without much effort
RabidGravy okay, pretty much what I thought then :) 12:13
RabidGravy may have a poke at it later as I have been thinking about the messaging thing recently 12:14
while I consider whether I can be arsed making the IBM MQ binding (which is more work than I anticipated :)
jnthn sjn: fwiw, there's plans to regularize the open/close quotes aspect to be Unicode property based: design.perl6.org/v6d.html#Formal_R...2FBrackets 12:15
RabidGravy unless of course someone has an implementation of CStructs with shaped array members down the back of the sofa
jnthn Not me, I'm afraid 12:20
jnthn missed CStructs with callbacks in this week... 12:20
AJ_ hello 12:21
jnthn wanders off for luch
lunch, even :)
sjn jnthn: ah, cool! 12:23
timotimo interesting. bloaty attributes the majority of our memory taken to a compunit "None". perhaps that's 3rdparty stuff that might not have been compiled -g?
sjn but with "plans", I really shouldn't hold my breath then. :-|
timotimo interesting, it also outputs one line with "[None]" after each .c that comes from 3rdparty 12:24
[None] is at 78.6% VM size, and 89.9% file size 12:25
then comes [Other] which is 11% VM, 5.2% file
and then interp.c which is 2.9% vm, 1.4% file
IOninja AJ_: \o 12:26
AJ_ \o 12:27
IOninja spots a bug in perl6.fail :( 12:39
Security bug :( 12:40
IOninja or maybe with RT's API :/ 12:43
timotimo uh oh
lucasb if the problem is in RT, then it's even more serious :) 12:44
IOninja I guess I should hunt down right now :) 12:45
MasterDuke timotimo: i would have guessed that the unicode db would be a decent % 12:50
perlawhirl hi perlers 12:51
how are we all? 12:52
IOninja reat
sjn rekt? 12:52
:) 12:53
perlawhirl: ALL IS WELL
:D
perlawhirl so I wrote a few blog posts... i don't blog. I think about it, but I don't. but i started playing with matplotlib via perl6 and inline::python
the process has been interesting enough for me to write something down... appreciate thoughts
www.0racle.info/articles/matplotlib_in_p6_intro
sena_kun I've found a duplicate bug in RT, should I report it here? 12:54
MasterDuke perlawhirl: "fist few diagrams" 12:55
perlawhirl FIST!
ty... fixed 12:56
lucasb sena_kun: which ones? 12:57
sjn Is there a way to to list all Unicode characters that have certain properties? 12:58
sena_kun lucasb, rt.perl.org/Public/Bug/Display.htm...et-history and rt.perl.org/Public/Bug/Display.htm...et-history seems to report the same cases.
though the old one should be expanded with info about "0x" numbers to be complete 12:59
MasterDuke perlawhirl: "headed of to"
u: help
unicodable6 MasterDuke, Just type any unicode character or part of a character name. Alternatively, you can also provide a code snippet. # See wiki for more examples: github.com/perl6/whateverable/wiki/Unicodable
MasterDuke sjn: ^^^
lucasb sena_kun: yes, duplicates. some RT admin should merge them 13:00
interesting that chr() with large numbers changed behavior a few times
IOninja merged
MasterDuke u: { .uniprop eq 'Nd' }
sena_kun IOninja++ 13:00
perlawhirl MasterDuke: Thanks 13:01
unicodable6 MasterDuke, U+0030 DIGIT ZERO [Nd] (0)
MasterDuke, U+0031 DIGIT ONE [Nd] (1)
MasterDuke, 580 characters in total: gist.github.com/dde3de180647b39976...504618e379
MasterDuke sjn: ^^^
perlawhirl: "sink my teeth in", i would say "into", but that may be a US vs AU thing 13:02
perlawhirl MasterDuke: No that's a sleep vs lack-of-sleep thing :D 13:04
MasterDuke: truth be told, I've already written parts 3 and 4, but clearly need to proof read them a bit more. 13:05
thanks again for your grammarly assistance 13:06
MasterDuke perlawhirl: welcome. i was interested, having played around with matplotlib, Perl 5's Chart::Gnuplot, and then Perl 6's SVG::Plot for the *ables. but that little experimentation being the complete extent of my charting/plotting experience 13:16
moritz SVG::Plot is really basic 13:19
RabidGravy riginal exception: 13:30
Tried to read() on a socket from outside its originating thread
which is kinda special as there ain't no socket in sight
IOninja Found the bug. It was in perl6.fail's RT module that stored the UserAgent in an attribute and re-used it for all requests and by default it keeps the cookies. So if someone logged in, that UA got the RT login cookie set. Now, even if another user specified bogus password, the RT end point use for credentials validation (which isn't a proper page; just "view ticket #1" sort of page) notices the cookie and 13:32
clears the user as already logged in under whatever user logged in last.
Man.
Good thing this wasn't a nuclear plant -_-
IOninja Not that logged in users can do anything more than mark tickets and commits as reviewed for release ATM :) 13:36
moritz ... then somebody would have been able to mark tickets and commits reviewed for a nuclear power plant :-) 13:38
BenGoldberg I've got a question about NativeCall: 13:55
BenGoldberg There's a C API function which wants to take a callback function, it's proto is something like void registercb(int (*usercb)(char **important, void *userdata), void *userdata); 13:57
When usercb is called, important will be a NULL terminated array of strings.
BenGoldberg Should I expect sub registercb( &callback (Str @important, Pointer), Pointer ) is native(...) {}; to "just work" ? 13:59
BenGoldberg (Pretend I had the appropriate --> int32 in there) 14:01
BenGoldberg I'm looking through the docs, and I'm confused ;) 14:01
BenGoldberg thinks that NativeCall's docs should be split into *at least* two pages... 14:06
BenGoldberg Also, after I call the C API's unregistercb(), how do I tell NativeCall that the C library is done with the &callback, so that perl might eventually GC it? 14:15
RabidGravy BenGoldberg, you'd need to make that CArray[Str] $important 14:16
BenGoldberg Ok, that I can do.
RabidGravy it is managed by Perl 6 it will be GCd when it would normally be 14:18
RabidGravy the opposite thing is what you have to worry about, that is that it doesn't get GCd before the C library is done with it 14:21
Geth perl6.org: c452dec5f8 | Cale++ | source/community/index.html
add link to most wanted and bug tracker blog post

Also beef up the "write about your experience section"
15:09
sjn MasterDuke: ah. 15:16
oops
#fail
RabidGravy so I can't get the poll to work in a useful way in the general case but it works like a charm for the pg notifications 15:22
RabidGravy DBIishX::PGNotify is such an ugly name though 15:43
IOninja
.oO( Pg::Notify )
15:44
RabidGravy yeah, true, it only *uses* DBIish rather than extending it 15:47
Geth doc: hankache++ created pull request #1232:
Add Pod tutorial
15:48
hankache hello #perl6 15:51
What do you think of github.com/perl6/doc/pull/1232
I distilled S26 15:53
hankache Merge it if you like it. 15:54
ciao 15:55
Geth doc: febff7c355 | Cale++ | doc/Type/Pod/Block.pod6
Fix links for subclasses table
16:08
sena_kun cale2, I'm not agree with ^. The original issue is github.com/perl6/doc/issues/759 and should be fixed from the root. 16:12
cale2 sena_kun: oh shoot... did I break the table then? 16:13
I actually thought, before I pushed that, maybe we should just get rid of that table? The type graph is helpful enough. The table is sort of redundant 16:14
sena_kun cale2, I don't think(it is already broken), but I'd rather revert it if you're okay with it. If you want proper links in tables, Pod::To::Html is ready for some love, I think.
IOninja fwiw those perl6.party articles about tickets are a bit out of date. These days perl6.fail is much more useful than the web app they're talking about. 16:15
cale2 sena_kun: can you revert it? I don't know how
timotimo .tell BenGoldberg currently callbacks passed to C always leak until the process ends, because we have no way of figuring out what C-land does with it. it wants to have some kind of API for sure at some point. just ... how?
yoleaux timotimo: I'll pass your message to BenGoldberg.
IOninja Clone the repo. Type "git revert febff7c355" git push
Clone the repo. Type "git revert febff7c355", then git push 16:16
sena_kun cale2, I'll do it.
And I think that the table is still useful.
cale2 IOninja: Your blog posts are helpful for onboarding people still. Unless it's so out of date that it's no longer relevant. perl6.fail/ Looks great 16:17
sena_kun: thank you
Geth doc: 5ba57ef4df | Altai-man++ | doc/Type/Pod/Block.pod6
Revert "Fix links for subclasses table"

This reverts commit febff7c355fa9f7c824a03d513881894adc88cd4.
This is not a valid solution.
See github.com/perl6/doc/issues/759 as an original issue and irclog.perlgeek.de/perl6/2017-03-04#i_14205280 as conversation about reverting
16:19
sena_kun done. cale2, sorry for the inconvenience. 16:20
cale2 How should I go about creating new pages in docs? 16:21
Nothing special is needed? Just create a Declarator.pod6 file in the types/Pod/Block/ folder? 16:22
sena_kun cale2, you can just create *.pod6 file in appropriate directory, I guess.
cale2, yes.
cale2, wait a minute...
sena_kun cale2, github.com/perl6/doc/blob/master/C...ting-types - :) 16:22
cale2, don't forget about "Testing examples" section of this document too. 16:24
cale2 ok
ah. homebrew is broken on my macbook, so most of my contributions are not exactly kosher lol 16:25
cale2 I program perl6 using small samples in glot.io haha 16:25
timotimo for simpler things camelia and many of the *ables will also take a link to a github gist 16:27
cale2 IOninja: what is the relationship between perl6.fail/ and github issues? Is perl6.fail/ for test coverage AND compiler bugs? 16:27
timotimo the coverage on perl6.fail is just there because "why buy another domain name?" 16:28
cale2 so rakudo uses that domain instead of using github issues. But the ROAST uses github issues
timotimo no, rakudo uses rt.perl.org, it's just that perl6.fail is a nicer interface to rt than rt is 16:29
cale2 timotimo: that's what I meant. So if someone wants to contribute to rakudo, they wouldn't first look at github issues, they would look at perl6.fail/ 16:30
timotimo sounds about right
cale2 But if someone wants to contribute to test coverage, they should be directed to github and NOT perl6.fail/
timotimo not necessarily
perl6.fail/t/TESTNEEDED - there is this 16:31
IOninja cale2: what gihub issues? what test coverage?
timotimo: coverage is on perl6.WTF because why not buy another domain :)
cale2: perl6.fail shows all open tickets on RT. That's it 16:32
timotimo oh!
btw, jnthn made a very good suggestion on how to make the line numbers more sensible
cale2 That's a lot of zeros. Is that right? 16:33
timotimo nah, it's broken
cale2 I'm asking about this stuff because I updated the community page with links to help ramp people up, but I think I linked the wrong thing. github.com/perl6/perl6.org/commit/...bea8836588 16:34
linked a blog post that may be out of date 16:35
timotimo gotta be AFK for a bit 16:39
Botocide localhost:3000/7̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈̈􏿽xCC 16:49
IOninja hmmm
mst ah, it fixed itself 16:49
IOninja mst: that was me :) 16:49
m: my $x = "7" ~ "\x[308]" x 2000
camelia Too many codepoints (2001) in grapheme
in block <unit> at <tmp> line 1
mst oh, right, I assumed spammer rather than fuckup ;)
IOninja ^ I noticed this is now the case 16:50
So I wanted to see if our Perl 6 bots would crap out if they see too many combiners. But I guess telnet doesn't send stuff right
IOninja m: try my $x = "7" ~ "\x[308]" x 2000 16:51
camelia ( no output )
ufobat .seen zostay
yoleaux I saw zostay 11 Dec 2016 18:10Z in #perl6: <zostay> No. Hard to find time and when I do I keep running into obscure async bugs
IOninja So basically, we should decode all outsider data in a `try` block.
hm
elaADnlxie hm 16:52
ufobat did zostay actually create a ticket for his async bugs? i think he was struggeling with the tests here: github.com/zostay/HTTP-Request-Supply
zostay I've haven't done much Perl 6 lately. Too busy with other things recently. 16:55
yoleaux 19 Feb 2017 12:15Z <ufobat> zostay: what is the status of your HTTP-Request-Supply? i'd really love to have it on modules.perl6.org so we can have a async http p6w server
ufobat i see :) hope you find some time soon :) 16:56
unfortunatelly i cant help with the asnyc stuff, i have no clue about that kind of black magic :D 16:57
zostay The async bugs or just lack of understandable diagnostic messages was pretty discouraging and I haven't really tried to get back to it
zostay I don't know how much that's improved in the last few months, but from what I read in p6w seems like it should be at least a bit better 16:58
ufobat but your tests in the http:.request::supply are still failing, the are in wrong order, i assume?
Geth ecosystem: 7ojo++ created pull request #302:
Add Git::Simple to ecosystem
17:10
Geth ecosystem: cc81439bdf | (Jarkko Haapalainen)++ | META.list
Add Git::Simple to ecosystem

See github.com/7ojo/perl6-git-simple
17:17
ecosystem: c5d3757d1e | Altai-man++ | META.list
Merge pull request #302 from 7ojo/patch-1

Add Git::Simple to ecosystem
zostay Order is the basic problem of async 17:19
IOninja heh, so the ton of combiners didn't knock down the bots, but apparently killed the bidirectional copy/paste between my VM and host OS :S 17:22
timotimo wat :) 17:23
IOninja Yeah, can't copy-paste anything anymore. 17:24
.tell SmokeMachine FWIW, when you're adding fixups to PRs, you can do `git commit --amend` to add them and then `git push -f` to force-push them (force-pushing to your fork or separate branch is OK, but never do it to master). This way history stays clean when the PR gets merged. 17:28
yoleaux IOninja: I'll pass your message to SmokeMachine.
IOninja I guess that's my fault for not choosing the 'Squash' option when merging -_- 17:29
SmokeMachine IOninja: ok, I'm sorry 17:48
yoleaux 17:28Z <IOninja> SmokeMachine: FWIW, when you're adding fixups to PRs, you can do `git commit --amend` to add them and then `git push -f` to force-push them (force-pushing to your fork or separate branch is OK, but never do it to master). This way history stays clean when the PR gets merged.
b2gills .tell Todd the latest version of Perl 5 has subroutine signatures similar to that of Perl 6 17:51
yoleaux b2gills: I'll pass your message to Todd.
geekosaur iirc they are on rhel, "latest version of Perl 5" is problematic 17:52
uh, actually centos7
anyway, ancient everything
except rh keeps pissing off its enterprise customers by insisting on hotpatching systemd to close-to-latest 17:53
geekosaur (not sure how many enterprise customers they even have left; there's been a veritable flood of them switching to SuSE) 17:54
b2gills m: #`( perlawhirl ) my @a = 1..10; say @a»² 17:59
camelia [1 4 9 16 25 36 49 64 81 100]
stmuk lose your data with btrfs on suse or suffer systemd :) 18:00
mst geekosaur: the rule for RHELL has been "build your own perl" since 5.8.x 18:01
geekosaur: basically since the point where they deployed a patch to work around a bug in Class::DBI that made DBIx::Class 30x slower 18:02
IOninja m: say {$++²} … 100
camelia (0 1 4 9 16 25 36 49 64 81 100)
mst (took me two years and getting a pumpking to yell at them to get that fixed)
geekosaur mst, yes, I know, but Todd_ has been fairly insistent on only using stuff from the package manager :/ 18:03
mst sucks to be him then, I guess
mst I should build rpms or something 18:04
BenGoldberg m: sub foo(--> int) {3}; say foo.WHAT; 18:05
yoleaux 11:15 EST <timotimo> BenGoldberg: currently callbacks passed to C always leak until the process ends, because we have no way of figuring out what C-land does with it. it wants to have some kind of API for sure at some point. just ... how?
camelia (Int)
geekosaur 's answer is to bail from rhel/centos like everyone else; if you have a trainwreck in progress like rh does, the answer is not to replace the caboose with another engine and keep plowing forward... 18:07
b2gills m: sub foo(--> int) {3}; multi bar (Int --> 'class'){}; multi bar (int --> 'native'){}; say bar foo 18:08
camelia class
b2gills m: sub foo(--> int) {3}; multi bar (Int --> 'class'){}; multi bar (int --> 'native'){}; say bar my int $ = 3 18:09
camelia native
b2gills m: sub foo(--> int) {3}; multi bar (Int --> 'class'){}; multi bar (int --> 'native'){}; say bar my int $ = foo
camelia native
BenGoldberg timotimo, The obvious solution is to advise users to declare callback arguments as Pointer, and provide a subroutine: native_wrap_cb( Callable , Signature ), whose return object has .Pointer and .dispose. 18:12
IOninja PSA: If you implement a feature, document it. Or least open an Issue on docs repo. No point in implementing stuff if users don't know about it.
BenGoldberg Another possibility would be to add something like 'sub quicksort(...) is native(...) is callback-disposing;' which would tell NativeCall that as soon as the top-level native subroutine (quicksort in this example) returns, then any callbacks passed to it will no longer be used in C-land. 18:30
IOninja Wonder what the fastest way to count the number of times a particular char occurs. 18:35
elaADnlxie NeuralAnomaly: status
NeuralAnomaly elaADnlxie, [✘] Next release will be in 1 week and 6 days. Since last release, there are 29 new still-open tickets (1 unreviewed and 0 blockers) and 1 unreviewed commits. See perl6.fail/release/stats for details
IOninja m: for ^1000_000 { $ = +'foo.bar.ber.bez'.comb: '.' }; say now - INIT now 18:42
camelia 12.08750489
IOninja m: use nqp; sub count($s) { my int $c = 0; my int $pos = 0; nqp::while(nqp::isge_i(0, ($c = nqp::index($s, '.', $pos))), ($c = nqp::add_i($c, 1))); $c }; for ^1000_000 { $ = count 'foo.bar.ber.bez' }; say now - INIT now
camelia 0.7614110
IOninja m: say 12.08750/0.7614110 18:42
camelia 15.8751318
IOninja m: use nqp; sub count($s) { my int $c = 0; my int $pos = -1; nqp::while(nqp::isge_i(($pos = nqp::index($s, '.', ($pos = nqp::add_i($pos,1)))), 0), ($c = nqp::add_i($c, 1))); $c }; for ^1000_000 { $ = count 'foo.bar.ber.bez' }; say now - INIT now 18:46
camelia 0.98162135
timotimo BenGoldberg: but that's so much more work 19:29
timotimo BenGoldberg: in perl6 you can always just put your pointy blocks directly into the arg list 19:30
now you'd have to put it in together with a declaration :(
BenGoldberg Well, if you had an 'is callback-disposing' solution, you could still put point blocks directly into the arg list. 19:31
You only need a declaration for situations when you are doing library_func_register_cb(sub {...}), and (only god knows how much later) library_func_register_uncb() 19:33
Err, unregister_cb
. o O (Sorry, we're all out of uncallbacks.) 19:34
geekosaur I would be tempted to do the opposite 19:36
is foreign-persist(sub)
BenGoldberg I'm presently writing a perl6 plugin for hexchat, and one *super* commonly used thing is going to be $hook = Hook.command("custom_command_name", sub {...}), where the user can, if they want, do $hook.unhook, which removes that custom command.
geekosaur or for that matter pointers that aren't part of the result type 19:37
naxieAlDle goddamn emacs, stop eating my cpu
geekosaur emacs had a transporter accident too? 19:38
BenGoldberg It's probably gc-ing. 19:39
naxieAlDle well, it happened after I tried using perl6-mode with Grammar.nqp 19:40
BenGoldberg Maybe you need an nqp mode?
Several of the other script language plugins (perl5, python) provide a way to unload and reload individual scripts. I'd be unhappy if unloading a perl6 script merely undid the hooks, but left everything loaded in the interpreter. 19:41
IOninja Can a couple of people give me an example of a file extension? 19:47
IOninja Just extension 19:47
BenGoldberg .exe, .txt, .jpg, .jpeg, ....
IOninja And someone else? 19:48
(second person :))
BenGoldberg Maybe 'sub blah(....) is native is persistant-callbacks(&manager(&free_er)' ... without the persistant-callbacks, the native callbacks are freed immediately. With it, the &manager function is called every time NativeCall makes a callback, and it receives a closure (&free_er) which, when called, tells nativecall to free up the C side of things.
IOninja naxieAlDle: yo, give me some examples of file extensions. Just extensions, no filenames. 19:49
naxieAlDle IOninja: .sv .hpp .docx .pm6 19:50
IOninja Thanks :)
naxieAlDle IOninja: how many do you need? :)
IOninja That's all. Wanted to see whether people naturally include the leading dot when talking just about extension :)
BenGoldberg That's not a fair manner of doing a survey. 19:52
He might have added the dot just because I included it.
IOninja Hehehe
It's not. But it's good enough ;) 19:53
BenGoldberg You should have asked people to /msg you instead of saying it on the channel.
IOninja meh
BenGoldberg Try asking over on #perl 19:54
naxieAlDle oh
BenGoldberg: actually, I haven't even seen it
timotimo BenGoldberg: if there's an "unregister" function, you'll need to have stored the exact code object in some variable anyway
otherwise you'll run into trouble
naxieAlDle but my brain could've picked it up automatically, that's true
geekosaur IOninja, most of us do (because an extension doesn't *always* have a dot; a few things use _ or others) 19:55
it's fairly rare but happens just often enough that we include the leader 19:56
BenGoldberg timotimo, C language users of the api get back a hexchat_hook_t* from any of the various hexchat_hook_<foo> functions; calling hexchat_unhook(thehookpointer) unregisters the callback. 19:57
geekosaur also there's a de facto convention that "jpg" without the leader means the type/format, not the extension
timotimo OK, but on the perl6 side i don't think we have a way to say "the callback related to this pointer needs to be cleared"
IOninja geekosaur: what's this about using `_` for extensions? 19:58
geekosaur like I said, it's very rare, but you will occasionally encounter it. like using _d to indicate a directory of additional files for a config (instead of the .d convention that came from solaris; _d was more of an AT&T thing there) 19:59
IOninja Ah 20:00
geekosaur I've also seen _s but I can't recall what it deoted 20:01
*denoted
BenGoldberg I seem to recall some editor (was it emacs) making a back up of a file with a ~ attached to it's name. 20:04
naxieAlDle and also #files# for unsaved stuff, yes 20:05
naxieAlDle hm, this test doesn't achieve anything, right? github.com/perl6/roast/blob/master...infix.t#L6 20:11
IOninja mhm, better use something weirder for the operator... 20:12
naxieAlDle ok I'll change it 20:13
BenGoldberg There's already a unicode operator in that test, © 20:17
naxieAlDle pft, no, not going to change it 20:29
there's already a test for ©, and there are some tests for actual operator overloading
so this particular one is useless I guess…
lizmat . 20:32
BenGoldberg m: dd [gather take 5]; 20:33
camelia [5]
BenGoldberg wonders if that will always produce an array, and never get super clever and make something lazy.
naxieAlDle m: dd [lazy gather take 5]; 20:34
camelia (5, Any, Any, Any, Any, Any, Any, Any, Any, Any... lazy list)
lizmat BenGoldberg: it's similar to 1 element slices: you always get a List there as well 20:35
naxieAlDle ok I changed my mind :P
lizmat m: my @a = ^10; dd @a[4]; dd @a[(4,)]
camelia Int @a = 4
(4,)
sjn reads Zef source code 20:37
sjn It's quite pleasant :) 20:37
BenGoldberg m: enum Foo (qw,zero one,); say Foo.pick(*) 20:40
camelia (one zero)
BenGoldberg m: enum Foo (qw,zero one,); say Foo.enum
camelia No such method 'enum' for invocant of type 'Foo'
in block <unit> at <tmp> line 1
BenGoldberg m: enum Foo (qw,zero one,); say Foo.enums
camelia Map.new((:one(1),:zero(0)))
BenGoldberg m: enum Foo (qw,zero one,); say Foo::zero
camelia zero
BenGoldberg m: enum Foo (qw,zero one,); say Foo::("zero") 20:41
camelia 5===SORRY!5=== Error while compiling <tmp>
Combination of indirect name lookup and call not supported
at <tmp>:1
------> 3m Foo (qw,zero one,); say Foo::("zero")7⏏5<EOL>
expecting any of:
argument list
naxieAlDle BenGoldberg: what are you trying to do? :)
BenGoldberg I'd like the same list as .pick(*) is giving, but without it randomizing the oder.
s/oder/order/
I suppose I could sort them .... 20:42
naxieAlDle no-no, there was a thing, mmm
m: enum Foo (qw,zero one,); say Foo.^enum_value_list 20:43
camelia (zero one)
BenGoldberg naxieAlDle++ 20:44
naxieAlDle BenGoldberg: do note that this is not specced
but that's what Enums use internally for .pick 20:45
BenGoldberg I see, it's over in meta-class-land, for some silly reason... 20:46
naxieAlDle BenGoldberg: I guess it would make sense to add a method that will expose this thing 20:48
that's not the first time I see somebody asking for this, and I needed it myself
BenGoldberg irclog.perlgeek.de/perl6/2016-05-20#i_12518778 for example ;) 20:49
irobotnot p6: say 3; 20:51
camelia 3
naxieAlDle m: say ‘hello world!’
camelia hello world!
irobotnot p6: [1..100].hyper.map({ $_ +1 }).list.say; 20:52
camelia (2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 …
IOninja m: say ⅓
camelia 0.333333
BenGoldberg m: enum Foo (qw,zero one,); say ::("Foo").::;
camelia ===SORRY!===
MVMArray: Can't pop from an empty array
IOninja known issue
SmokeMachine what's the easiest way do "require A::B::*"? I mean: if is there A::B::C, A::B::D and A::B::E, I'd like to require all 3... how could I do that? 20:53
irobotnot p6: [1..100].race.map({ $_ +1 }).list.say;
camelia (2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 …
IOninja SmokeMachine: for dir("A/B") { require .&Str } # I'm guessing...
irobotnot: FWIW, you can also /msg camelia to eval in private
irobotnot IOninja: thx 20:54
IOninja irobotnot: also, default batch size for race/hyper is 64... you may wanna use something smaller
with :batch(20) for example
SmokeMachine IOninja: but if A::B::Z, by example, was installed by another dist, it won't be found, right?
BenGoldberg m: enum Foo (qw,zero one,); dd ::("Foo")::zero
camelia Foo::zero 20:55
BenGoldberg m: enum Foo (qw,zero one,); dd ::("Foo")::.keys
camelia ()
IOninja m: sleep 1 for ^4 .race: :batch; say now - INIT now
BenGoldberg m: enum Foo (qw,zero one,); dd ::Foo::.keys
camelia 1.00515620
("one", "zero").Seq
IOninja SmokeMachine: errr, just .Str not .&Str 20:55
irobotnot IOninja: cool. I was copy-pasting from a sample 20:56
IOninja SmokeMachine: and don't know
SmokeMachine IOninja: Im trying to do some kind of "plugin system"...
IOninja irobotnot: there's a lightning talk on .race and other things, if you're interested: perl6.party/post/Perl-6-What-Progr...re-Is-Like
SmokeMachine: oh, yeah, what I said won't work for installed stuff. Never mind :) 20:57
irobotnot IOninja: thx. will check it out. just started with p6
SmokeMachine any other suggestion?
IOninja SmokeMachine: dig in github.com/rakudo/rakudo/tree/nom/...e/CompUnit trying to find a method for it (I... *think*... it was added). Or ask nine / ugexe about it 20:58
You probaly want to query what's installed and grep for things that have prefix whatever.
SmokeMachine thanks! 20:59
naxieAlDle oh… 21:04
m: say True ⁇ True ?? 5 !! 10 ‼ 42 21:05
camelia 5
IOninja oh⁇
naxieAlDle m: say True ⁇ False ?? 5 !! 10 ‼ 42
camelia 10
IOninja hahahaha
naxieAlDle m: say True ⁇ 42 ‼ False ?? 5 !! 10
camelia 42
naxieAlDle m: say False ⁇ 42 ‼ False ?? 5 !! 10
camelia 10
naxieAlDle m: say False ⁇ 42 ‼ True ?? 5 !! 10 21:06
camelia 5
naxieAlDle IOninja: coincidence? I don't think so :P
IOninja naxieAlDle: coincidence with what?
My using ⁇ It was. I'd type it faster if I didn't reboot my VM today and xmodmap were running 21:07
naxieAlDle I'm impressed :) 21:07
it would take me 3 seconds just to read the thing :P
IOninja What thing?
naxieAlDle my message 21:08
IOninja Which message?
IOninja doesn't get it 21:08
But... I laughed because for a second I thought you were showing a case where using, say, `!!` instead of `‼` in a mix of ??⁇!!‼ produced different results. 21:09
naxieAlDle ah no, I just realized there are no tests for it
IOninja There are 21:10
naxieAlDle but it should work as expected
IOninja Well, there are tests for ⁇‼ I mean
naxieAlDle github.com/perl6/roast/issues/248
not a big deal anyway 21:11
IOninja I'll write those just for fun right now
IOninja Actually, never mind. I need to do other things... 21:14
naxieAlDle IOninja: like work on IO stuff? :P 21:17
naxieAlDle
.oO( what “stuff”? )
21:17
IOninja naxieAlDle: yeah 21:19
Though I did find a minor bug:
m: say 0 ⁇ 1 ?? 2 ⁇ 3 ?? 4 !! 5 ‼ 6 !! 7 !! 8
camelia 5===SORRY!5=== Error while compiling <tmp>
Your !! was gobbled by the expression in the middle; please parenthesize
at <tmp>:1
------> 3say 0 ⁇ 1 ?? 2 ⁇ 3 ?? 4 !! 5 ‼ 6 !! 77⏏5 !! 8
expecting any of:
infix
IOninja It wasn't !! that was gobbled, but ‼
And well, not really gobbled either.... 21:20
I just used !! instead of ‼
See all this unicode stuff causes problems. Now it's spreading to other exceptions and makes their content somewhat nonsensical, even though in the past it made sense. 21:21
naxieAlDle OK OK I'll focus on finding bugs in texas operators :PPP
IOninja :)
Geth ecosystem: acaa154111 | (Jonathan Stowe)++ | META.list
Add Pg::Notify

  github.com/jonathanstowe/Pg-Notify
21:28
RabidGravy there, once I got poll(0 working twas a snap :) 21:30
SmokeMachine Yes, I didn't write tests mixing ⁇‼ and ??!!... :( 21:33
naxieAlDle s: {}, 'gist' 21:35
SourceBaby naxieAlDle, Ehhh... I'm too scared to run that code.
SmokeMachine IOninja: so, was that a bug?
naxieAlDle s: &abs, 'gist'
SourceBaby naxieAlDle, Sauce is at github.com/rakudo/rakudo/blob/b597...Mu.pm#L510
naxieAlDle s: &infix:<+>, 'gist'
SourceBaby naxieAlDle, Sauce is at github.com/rakudo/rakudo/blob/b597...Mu.pm#L510
IOninja s: Supplier.new.Supply, 'tap' 21:36
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/b597...ply.pm#L77
IOninja FWIW, I see no `on-closing` taken by that routine, so perhaps the docs ( docs.perl6.org/type/Tap ) are wrong. That's rt.perl.org/Ticket/Display.html?id=130920
SmokeMachine: what was a bug?
SmokeMachine m: say 0 ⁇ 1 ?? 2 ⁇ 3 ?? 4 !! 5 ‼ 6 !! 7 !! 8 # IOninja, this 21:37
camelia 5===SORRY!5=== Error while compiling <tmp>
Your !! was gobbled by the expression in the middle; please parenthesize
at <tmp>:1
------> 3say 0 ⁇ 1 ?? 2 ⁇ 3 ?? 4 !! 5 ‼ 6 !! 77⏏5 !! 8 # IOninja, this
expecting any of:
IOninja Yes, the error is incorrect.
And this is exactly why I'm anti-adding-Uncode stuff. It's hard to forsee these distant effects. 21:38
And then you add all these conditionals all over the codebase to handle something that'll be used by minority of users.
naxieAlDle is already using it
ugexe If you want to use CUR for a plugin system then write a CUR that subclasses CURI and loads all modules it can find when its initiated 21:42
But it would be easier to not do that and just use CUR.installed() to find what you want 21:43
IOninja It doesn't have a list of all the installed modules?
ugexe github.com/rakudo/rakudo/blob/nom/...on.pm#L572 21:44
IOninja Ah
m: CompUnit::Repository::Installation.installed.say
camelia Cannot look up attributes in a CompUnit::Repository::Installation type object
in block <unit> at <tmp> line 1
IOninja m: CompUnit::Repository::Installation.new.installed.say
camelia Parameter '$prefix' requires an instance of type Str, but a type object was passed. Did you forget a .new?
in block <unit> at <tmp> line 1
21:44
ugexe need a specific instance
IOninja m: $*REPO.installed.say 21:45
ugexe m: say $*REPO.repo-chain[0].installed
camelia Nil
ugexe m: say $*REPO.repo-chain.map(*.?installed)
camelia (Nil (CompUnit::Repository::Installation::InstalledDistribution.new(prefix => "/home/camelia/rakudo-m-inst-2/share/perl6/site".IO(:SPEC(IO::Spec::Unix),:CWD("/home/camelia")))) () (CompUnit::Repository::Installation::InstalledDistribution.new(prefix => "…
RabidGravy which suggests to me that something should be required earlier 21:46
ugexe such a plugin system would limit you to CURI, so no -Iwhatever
this is why zef just does not use a custom plugin CUR and just does regular old dynamic load 21:47
i have a module (not in ecosystem) called CUR::Lib which is just like CURI but without the sha1 file names which would help solve this though 21:48
but precompile doesn't work with it unless its built with the rest of rakudo source
IOninja m: say $*REPO.repo-chain.map(*.?installed).grep({$_ !=== Nil}).flat».meta».<name> 21:50
camelia (Inline::Perl5 CORE)
RabidGravy the tricky bit for pluggable things is that we don't store interesting enough metadata about the modules 21:57
ugexe you have all metadata available through CompUnit.distribution.meta 22:00
so you just have to get to that
again just for CURI 22:01
RabidGravy yes that's the stuff that isn't interesting enough
RabidGravy infact as far as I can tell it doesn't even store everything in the META file 22:04
which I guess could be fixed 22:05
I'm thinking of something like the values in the "provides" being either the Str path or an object with a "path" and optional keys, like an array[str] "implements" that could be used by pluggable loaders 22:12
BenGoldberg s: &callframe
SourceBaby BenGoldberg, Sauce is at github.com/rakudo/rakudo/blob/b597...ame.pm#L51
RabidGravy ugexe, with zef can one influence what repo does the installing? 22:16
say I had a plogin system that needed the addional data, could I use a CUR that actually stored that? 22:17
ugexe you can get the path of everything as well 22:21
CompUnit.distribution.content("lib/My/Module.pm").path 22:22
introspec .meta<provides><My::Module> for the lib/MyModule.pm
RabidGravy right, but it still doesn't tell me whether some module implements some interface that I am interested in for a plugin 22:23
so some additional metadata is required, which isn't cyrrently stored 22:24
ugexe i imagine you would technically use the `emulates` field of meta6.json for that
RabidGravy so I guess the answer in no
but I don't think that is stored
ugexe everything is stored i believe 22:25
RabidGravy Hmm
ugexe --install-to will use whatever repo it points at to call .install(...) on. So if its CompUnit::Repository::Installable it should be compatible 22:27
your CUR would be identified with a short id, so it would be like --install-to=plugins#my/plugins
RabidGravy Ooh it does indeed store everything 22:32
sorry I was under the impression it didn't 22:33
something weird going on with the files (it seems to have all the files in the CURI) but hey 22:35
BenGoldberg m: sub foo(-->Int) {return "0"}; say foo; 22:43
camelia Type check failed for return value; expected Int but got Str ("0")
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
BenGoldberg m: sub foo(-->Int) {return "0"};
camelia ( no output )
BenGoldberg Any chance that, some time in the future, return types will be checked at compile time? 22:44
geekosaur I think stuff like that is ... not yet planned but intended? 22:45
BenGoldberg Ok. 22:46
BenGoldberg m: enum Nums (qw,zero one two,); sub foo(-->Int) { two }; say foo; 22:48
camelia two
naxieAlDle yes
I mean, the last snippet looks fine 22:49
geekosaur there's a lot of type inference and optimization that could be done but isn't currently being considered or worked on; we're still fixing the basics as it is
naxieAlDle though I wonder… what if it is a non-int Enum?
BenGoldberg m: enum Nums (qw,zero one two,); my int $maybe = two; say $maybe;
camelia 2
naxieAlDle BenGoldberg: maybe you'll also like this one 22:50
m: sub foo(-->Int) { True }; say foo;
camelia True
BenGoldberg m: enum StrEnum (map { $_ => $_ }, qw,apples oranges bananananas,); say apples
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
apples used at line 1
geekosaur m: say so True ~~ Int
camelia True
BenGoldberg m: enum StrEnum (map { $_ => $_ }, qw,apples oranges bananananas,); 22:51
camelia ( no output )
BenGoldberg m: enum StrEnum (map { $_ => $_ }, qw,apples oranges bananananas,); say StrEnum.pick(*)
camelia (oranges oranges apples apples bananananas bananananas)
BenGoldberg m: enum StrEnum (map { $_ => $_ }, qw,apples oranges bananananas,); dd StrEnum.pick(*)
camelia (StrEnum::apples apples, StrEnum::oranges oranges, StrEnum::bananananas bananananas).Seq
BenGoldberg wft?
geekosaur pairs stringify with a separating tab
BenGoldberg m: enum StrEnum (map { $_ => $_ }, qw,apples oranges bananananas,); dd StrEnum.pick ~~ Int 22:52
camelia Bool::True
BenGoldberg naxieAlDle, Looks like there can not exist any non-int enum. 22:53
naxieAlDle m: enum E (A => 4.2, B => 6.9); say E.enums
camelia Map.new((:A(4.2),:B(6.9)))
BenGoldberg m: say Bool ~~ Int; # this is why you can return True from a sub declared to return Int. 22:54
camelia True
BenGoldberg m: enum E (A => 4.2, B => 6.9); sub foo(-->Int) { A }; 22:54
camelia ( no output )
BenGoldberg m: enum E (A => 4.2, B => 6.9); sub foo(-->Int) { A }; foo();
camelia Type check failed for return value; expected Int but got E (E::A)
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
BenGoldberg Huh.
naxieAlDle ok, it DWIMs
BenGoldberg So num enums are allowed, but not strs. 22:55
naxieAlDle m: enum E (A => ‘why’, B => ‘not’); say A; say B
camelia why
not
BenGoldberg Why was my map not working?
m: enum F (apple => 'apple', banana => 'banana', berrie => 'berry'); say apple 22:56
camelia apple
naxieAlDle m: enum F (apple => 'blapple', banana => 'banana', berrie => 'berry'); say apple
camelia blapple
BenGoldberg oh..kay. Why was my map not dwimming, then? 22:57