»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
ugexe Because ‘use lib’ changes the repo chain 00:06
raycatwhodat Could someone give me a rundown on when you'd use flip-flops? 00:24
TreyHarris raycatwhodat: They're usually used in line-by-line processing to switch into and out of states. Like, to capture a HERE-doc 00:25
raycatwhodat Interesting. 00:27
Thank you.
b2gills raycatwhodat: Really the flipflops are from Awk and Sed 00:27
TreyHarris The loop { } construct in Perl 6 arguably makes it even less useful than it was in Perl 5, which was already "not very" 00:28
The freeform loop encourages you to stick exit and skip conditions wherever needed
raycatwhodat Gotcha. 00:29
SmokeMachine Some one could please comment on this?! I can’t decide if it’s a great idea or if I’m just crazy... github.com/FCO/Red/issues/15#issue...-476018889 00:42
yoleaux 24 Mar 2019 16:23Z <tbrowder> SmokeMachine: working PR has been pushed
SmokeMachine tbrowder: great! 00:45
AlexDaniel greppable6: fff 00:51
greppable6 AlexDaniel, 1026 lines, 110 modules: gist.github.com/5f2e4a5f5822649f1a...47d13382cc
AlexDaniel greppable6: \sfff\s
greppable6 AlexDaniel, 9 lines, 5 modules: gist.github.com/48430ffc160a1740e0...8197dc51bd
AlexDaniel greppable6: \sff\s 00:52
greppable6 AlexDaniel, 67 lines, 16 modules: gist.github.com/90f29f000a1c725e05...a1b3288ee4
AlexDaniel raycatwhodat: here's an example from the ecosystem: github.com/moritz/perl6-all-module...eam.pm#L36 00:53
Geth doc: softmoth++ created pull request #2697:
Align Mu.so & Mu.not docs with design
03:36
Geth doc: 6782472238 | (Luis F. Uceta)++ | doc/Type/List.pod6
Revise examples in the intro to lists.

Also move sentence about .item immediately after code snippet where it's first used. refs #2679
06:47
synopsebot Link: doc.perl6.org/type/List
doc: d95a8e6b6a | (Luis F. Uceta)++ | doc/Type/List.pod6
Reword sentence in the intro to lists
doc: 6b2ed9d13f | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/List.pod6
Merge pull request #2691 from uzluisf/master

Revise examples in the intro to lists. Thanks!
moritz cd 09:01
sorry, wrong window 09:02
El_Che moritz: we upgrade to blueray some time ago :) 09:03
masak moritz: too late, you're now in your home directory here on #perl6 :P 09:13
masak .oO( it's pitch black. you're likely to be eaten by a ~/.grue )
El_Che A group of trolls awakes and yells at you: "Perl is dead! Dead we tell you!" 09:15
SmokeMachine Some one could please comment on this?! I can’t decide if it’s a great idea or if I’m just crazy... github.com/FCO/Red/issues/15#issue...-476018889 09:19
moritz SmokeMachine: I've added a comment; I hope I haven't made things more confusing for you :D 09:41
SmokeMachine moritz: thanks! 09:52
moritz: the steps you describe are the same as I did, right? the difference is that its not the ORM that do that, right? 09:53
moritz SmokeMachine: at least the "change the code" part isn't done by the ORM 09:55
moritz but rather by explicitly deploying a new software version 09:55
(which might or might not have been how you've thought about it)
SmokeMachine moritz: the ORM would "change the code" because it would change the if clause on the code... sou would run another branch... 09:56
moritz: oh I got it! sorry, my English is terrible...
moritz SmokeMachine: it's probably a valid tradeoff. I've spent some effort into automating deployments, so if I can keep the code simpler by doing more deployments, I generally do that 09:57
SmokeMachine: I realize that others might be in very different situations
SmokeMachine moritz: I think the ORM giving you some information of how your migration is going could help to a non downtime migration... 09:59
moritz SmokeMachine: agreed 10:09
SmokeMachine moritz: so, do you think that having it would be good to Red? 10:10
moritz SmokeMachine: yes 10:12
SmokeMachine :) 10:13
patrickb o/ 10:25
Is it possible to create continuation lines in heredocs?
sena_kun m: my $a = $[Buf.new(12,3,67,97,114), Buf.new(12,3,71,80,83)]; say $a[0] ~ $a[1]; say [~] $a; 10:45
camelia Buf:0x<0C 03 43 61 72 0C 03 47 50 53>
Cannot use a Buf as a string, but you called the Str method on it
in block <unit> at <tmp> line 1
sena_kun shouldn't it work?
ah, I see
m: my $a = $[Buf.new(12,3,67,97,114), Buf.new(12,3,71,80,83)]; say $a[0] ~ $a[1]; say [~] |$a;
camelia Buf:0x<0C 03 43 61 72 0C 03 47 50 53>
Buf:0x<0C 03 43 61 72 0C 03 47 50 53>
sena_kun m: say |Buf.new(1,2,3) 10:55
camelia 123
tbrowder SmokeMachine: working on queries now with success, but have discovered a change needed in relationships to work with both create and query. i will get to a good state for all 4 models, load and bulk query, and will push to PR. it will be a while before i can finish. 12:36
.tell SmokeMachine ^^ 12:38
yoleaux tbrowder: I'll pass your message to SmokeMachine.
SmokeMachine . 13:18
yoleaux 12:38Z <tbrowder> SmokeMachine: ^^
SmokeMachine tbrowder: great to here its working!
AlexDaniel ooof github is having some hard time 14:10
leont Where can I make GSoC propose again? GIR should definitely be on there 14:52
jnthn GIR?
leont GObject introspection 14:54
It creates XML files that describe C interfaces. 14:55
So if you combine that with NativeCall, you can load the GIR to automatically generate bindings for anything that uses gobject: gtk, gnome, gio, gstream, etc… 14:56
(or at least that's the idea, I don't really know how integrating eventloops would work TBH) 14:57
jnthn Ah, I see :) 14:59
leont If you're on debianish, «apt search --names-only gir1.2» should give you some idea of what's available 15:05
It's 238 libraries on my machine 15:08
El_Che that would be cool 15:12
Xliff leont: Do you know how to take .gir files and convert them back to .xml? 15:13
Or better yet, the internal format for .gir? 15:14
After a bit of research, the .xml is only the intermediate step. If you want to use GIR, you need to load the .gir files directly.
xq is "raku" name for perl 6 officially adopted/approved? 15:18
I don't see it on perl6.org
leont Xliff: it seems you need to use the binary file instead, though gobject-introspection 15:19
through
tadzik xq: depends on your definition of "officially" 15:21
but the person who announced it left the project over name disagreements, to my understanding
xq I see marketing.perl6.org/id/1541379592/pdf_digital says it is Larry 15:22
tadzik basically, they made their decision pretty much by themselves, without prior consultation, which led to conflicts and all
xq Larry left?
tadzik no, no
leont Xliff: developer.gnome.org/gi/stable/
tadzik Larry's words and opinions were slightly overreacted to, imho 15:23
which led to the announcement and the brochure you linked
SmokeMachine tadzik: Larry made the decision...
tadzik I know he did :)
but a single line on IRC that picked the preffered alternative name is hardly equivalent to renaming the language 15:24
which is very much how this was advertised
discord6 <Rogue> A lot of people were asking for an alias, so Larry decided to go ahead and come up with one to avoid having multiple hanging around
El_Che the single line was the single presence he had 15:25
SmokeMachine I was reding it when he did... and hoping to he choose ofun (my preferred option...)
El_Che so you can't blame zoffix for that
discord6 <Rogue> Zoffix was in favor of raku?
ugexe there could have been 0 lines if he hadnt been forced to a deadline
tadzik Rogue: yeah 15:26
El_Che Rogue: Zoffix was in favour of an alias, whatever it was
SmokeMachine tadzik: no... it was advertised as a alternative name... as (at least me understood) Larry was saying it should be...
discord6 <Rogue> I'd like to avoid explaining that Perl 6 is not like Perl 5 as much as the next guy, but aliasing the thing will just lead to awkward questions down the road
<Rogue> for me it's full rename or bust, and obviously there isn't going to be enough support for a full rename 15:27
yoloi hi 15:27
my nm's yolo
El_Che Rogue: it's a pretty much "better than nothing" logic
yoloi el chepe
xq well, confusion achieved
discord6 <Rogue> I was trying to push for use of the alias on this discord server, but I gave up on that
yoloi donde estas mi coca
SmokeMachine hw wasn't forced for a dead line...
ugexe yes, he was 15:28
yoloi where r huckrs
i lk 4 huckers
xq why is an alias better than nothing?
discord6 <Rogue> There are/were a number of reasons for wanting some other name 15:29
Xliff leont: Ah, great! This is useful! Thanks!
SmokeMachine ugexe: he would be forced if someone have said to him "Give me a alternative name until XX/YY/ZZZZ or I will AAAAAAAAAA"
ugexe thats exactly what happened though?
discord6 <Rogue> a. people get tired of explaining the distance in the relationship between classic Perl and Perl 6 15:30
xq I can possibly see a reason in unconfusing various search engines
discord6 <Rogue> b. the name is presumably blocking Perl 5 from its next major version (but I personally don't think Perl 5 needs a next major version)
xq but not sure if that matters enough
discord6 <Rogue> also searchability 15:31
<Rogue> although I generally search "perl6" and get fairly good results
xq yeah
SmokeMachine ugexe: no, was more like: "You said that would choose an alternative name, so, could you please choose it before the date xx/yy/zzzz to give time to make the brochures before "something I forgot"?"
discord6 <Rogue> Probably before the 6.d release? 15:32
ugexe no, if the name wasnt chosen by such and such date then it was stated the community would vote on one. also larry even said soemthing along the lines of "hey i dont appreciate being rushed" aftering being badgered about the timeline towards the end 15:33
xq ok, thanks for the info, I sorta see the picture now
discord6 <Rogue> I just hope this naming kerfuffle doesn't turn into a community disaster
xq my main reason for asking is that I don't really like this name and I am seeing/checking if I can just pretend it doesn't exist and keep using perl 6 name
ugexe i am surprised people are not aware of this. none of this happened in secret
xq from what I've learned I guess I can
SmokeMachine that was because he asked again... 15:35
discord6 <Rogue> ugexe - well, there's no one official channel through which news is propogated
jnthn xq: Yes, lots of folks have just continued calling it Perl 6, and it was made very clear when the alias was selected that anyone wanting to simply call the langauge Perl 6 could do so.
discord6 <Rogue> and possibly the most official site, perl6.org, does not mention the alias on the homepage whatsoever
xq alright
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2019/03/25/...ool-truck/ 15:39
ugexe SmokeMachine: colabti.org/irclogger/irclogger_lo...8-10-18#l6 <-- proof of a deadline, proof of a stipulation, proof of a community vote if he didnt decide 15:40
SmokeMachine ugexe: with that sentence... do you really think he is being forced to do anything? 15:42
lizmat "I don't entirely appreciate this nudging the timeline up" feels to me that TimToady felt he was being asked to do something sooner rather than later 15:43
ugexe no. but im not going to dig up tons of irc logs to prove various points when that one line summarized everything nicely 15:44
Xliff If you have class A { also does Positional; also does Iterator; has @!a handles «pull-one iterator elems AT-POS EXISTS-POS join :p6sort('sort')» ... };
ugexe no in that he isn't being forced with a gun to his head
Xliff Is there a way that A can still wrap calls to those methods handled by @!a?
sena_kun lizmat, "Missing math/statistics functions" <- a link won't hurt, otherwise "Comments welcome" statement is lonely. :) 15:50
lizmat++ # weekly
lizmat sena_kun: the link was there, but missed a " :-( fixed now 15:52
sena_kun \o/ 15:52
thanks!
El_Che Rogue: I wrote this at the time. nxadm.wordpress.com/2018/11/08/quo-vadis-perl/ (not too optimist about the name thing, and very negative about the status quo) 15:53
AlexDaniel leont: not sure if anybody answered yet: github.com/perl-gsoc-2019/ideas 15:54
SmokeMachine lizmat: yes... and he would do it anyway... (that's how I read it...) 16:04
tbrowder SmokeMachine: some interesting bits in p6 weekly about another p6 orm 16:06
DB::Xoos 16:07
SmokeMachine yes... I had read that post...
I should write something like that for Red... 16:10
tony-o tbrowder: been out for a while, just haven't written any blogs since last PTS >.< 16:35
yoleaux 23 Mar 2019 07:00Z <jmerelo> tony-o: great! Thanks!
tony-o there's also Quicky for rapid prototyping 16:45
github.com/tony-o/perl6-db-orm-quicky 16:46
chrom howdy - does anyone can provide a link to samples build with Cro - especially small webservers? 16:51
p6: say 4 16:53
camelia 4
ugexe cro.services/docs/intro/getstarted ? 16:56
wahnberger_ nah.. i am already using cro for some client stuff...but i didn't dig into the server side :/ 16:57
wahnberger_ for running internal websites..cro instead of using cgi over httpd/nginx etc.. 16:58
tony-o are you looking for how to configur nginx as a reverse proxy to cro ?
wahnberger_ no - just some samples how to use Cro on websites..with formulars, database stuff and so on 16:59
not "on" websites..i mean Cro::HTTP::Server 17:00
tony-o that getstarted doc ugexe linked to has how to get cro up and running using Cro::HTTP::Server
wahnberger_ i know how to route etc. and all the samples work very well..at leats I am a "need a sample" Guy :D
sena_kun considering Cro::HTTP is not a web framework, but something that delivers stuff for you, you have to write templating, database access for yourself. 17:01
wahnberger_ yes - but how do I integrate my own templates or hand made sites into the Cro code 17:02
sena_kun or more of "wire it in", of course, there are modules for templating and databases stuff. :)
tony-o ah 17:03
wahnberger_ cro.services/docs/reference/cro-http-server
wahnberger_ in the samples ..the code after a route like the "get" is directly append to this route 17:04
wahnberger_ but for "real" sites i need to write all that stuff not there but in diffrent file setc.. 17:04
tony-o something here might help cro.services/docs/reference/cro-ht...erializers 17:05
for templating
sena_kun wahnberger_, you surely can do it, write a subroutine somewhere, import it, then call it.
Xliff Are there any templating systems out there for Perl6 ala Template Toolkit?
sena_kun get 'foo', $id -> { handle-foo-request($id) } 17:06
or something around that.
tony-o Xliff: there was moustache and one i wrote a long time ago out there, not sure either still work
sena_kun Xliff, modules.perl6.org/search/?q=template <-
and Cro::WebApp. ;) 17:07
wahnberger_ yeah sena_kun, thats exactly what i mean
jnthn wahnberger_: See cro.services/docs/structuring-services on how to structure and compose larger systems
wahnberger_ has anyone here used Cro for websites? :) 17:08
tony-o yes
sena_kun yes 17:09
wahnberger_ i wass searching around and found that there is nothing out there beside the well known clips and short docs
sena_kun not that it's open sourced. :| 17:10
wahnberger_ yeh.. probably i takes a while 17:11
ok, last question :) is there some other documentaion about using Cro that the Docs on cro.services you would suggest? 17:14
*than
Xliff Actually, for websites, I wonder if it might be better to use Bailador. I will have to evaluate both that and Cro, TBH 17:20
jmerelo wahnberger_: there might be something on the latest advent Calender
El_Che is bailador's development active? 17:21
jmerelo El_Che: yep, they released a new version a short time ago.
El_Che: ufobat is working on it, I think.
El_Che good to hear
sena_kun Xliff, it may be, though not sure what it's status. I'll be really excited to see an actual web framework built on top of Cro::HTTP.
jmerelo El_Che: github.com/Bailador/Bailador 0.0.18 just released 3 weeks ago. ufobat is making an excellent job there. 17:22
tony-o there is a yaml router module for cro that makes it nice for handling a lot of endpoints, am not recalling the name of it atm 17:23
wahnberger_ Uhm..Bailador looks comfortable for small internal websites 17:25
El_Che ah, nice. ufobat__++ 17:26
tony-o does look really easy
wahnberger_ yep
and they provide lots of samples to figure out how it can be used :D
for guys like me 17:27
wahnberger_ for me the concept looks very similar..but Cro says its NOT a framework while Balidors says it is 17:30
oh..ok ..baile() 17:31
sena_kun well, Cro is not a "Web Framework" for sure. A framework for building services using supplies - yes. :)
tony-o why do you not consider cro a framework? 17:35
ugexe Cro is not a framework§ 17:36
Cro is a set of tools and libraries, rather than a framework.
wahnberger_ thats what the Cro guys says
tony-o yes but it does a lot of the things frameworks say, in spite of what is written in the docs
s/say/do/
wahnberger_ cro.services/docs/structuring-serv..._framework 17:37
ugexe The docs also go over why the distinction is mostly academic
tony-o just lack of complete MV* ?
wahnberger_ its about control flow i guess
sena_kun tony-o, it is rather a tool for building chain of supplies made easy, with state, conditionals and other goodies. Other modules are "merely" examples of the approaches that happen to be useful.
tony-o, thus as one of Cro authors, I do not consider it to be a pure "Web Framework". In my own opinion(which may differ from public Cro team opinion, of course ;) ), Cro is potentially a much more powerful thing. Suggesting it as a web framework makes people think "Oh, I know this stuff, routes and get templates, right?", so they forget/don't know about what lies underneat. 17:39
right now, I am implementing LDAP protocol using Cro. Can I do it using Dancer/Mojolicious/Django/Whatever in the same way? :) 17:40
tony-o that seems like the intention in not calling a framework there is to avoid the connotation of frameworks in general :-)
jnthn The real point is that frameworks often try to own the overall application structure, while Cro is more like "I'll just do the stuff you need, but your application structure is yours" 17:41
kawaii When I think of web framework I think Dancer, Catalyst and such
sena_kun tony-o, I am against only "_WEB_ framework" thing. I am totally ok with "framework" word.
tony-o got it
jnthn Since in many cases, the web API or application is just one small corner of something much larger.
jmerelo jnthn: you have mail from Google Summer of Code :-) 17:44
Xliff m: role A[::T] { method a { given T { when uint8 | uint16 { say "Hello!"; }; }; }; my $a = 1 but A[uint8]; $a.a 17:46
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3"; }; }; }; my $a = 1 but A[uint8]; $a.a7⏏5<EOL>
expecting any of:
statement end
statement modifier
statement modifier loo…
Xliff m: role A[::T] { method a { given T { when uint8 | uint16 { say "Hello!"; }; }; }; |; my $a = 1 but A[uint8]; $a.a 17:47
camelia 5===SORRY!5=== Error while compiling <tmp>
Prefix | requires an argument, but no valid term found
at <tmp>:1
------> 3int8 | uint16 { say "Hello!"; }; }; }; |7⏏5; my $a = 1 but A[uint8]; $a.a
expecting any of:
prefix
Xliff m: role A[::T] { method a { given T { when uint8 | uint16 { say "Hello!"; }; }; }; }; my $a = 1 but A[uint8]; $a.a
camelia Hello!
Xliff m: role A[::T] { method a { given T { when uint8 | uint16 { say "Hello!"; }; }; }; }; my $a = 1 but A[Int]; $a.a
camelia ( no output )
Xliff I am getting this error: Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match: 17:55
tony-o where? 17:58
Xliff m: my $A = CArray[uint8].new; $a[0] = 16; my $B = nativecast(Pointer[uint8], $a); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[T], $a).deref }; }; }; }; my $a = $A but a[uint8]; $a.a 17:59
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$a' is not declared. Did you mean '$A'?
at <tmp>:1
------> 3my $A = CArray[uint8].new; 7⏏5$a[0] = 16; my $B = nativecast(Pointer[u
Xliff m: my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $a); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[T], $a).deref }; }; }; }; my $a = $A but a[uint8]; $a.a
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$a' is not declared. Did you mean '$A'?
at <tmp>:1
------> 3 16; my $B = nativecast(Pointer[uint8], 7⏏5$a); role A[::T] { method a { given T {
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[T], $A).deref }; }; }; }; my $a = $A but a[uint8]; $a.a 18:00
camelia ===SORRY!===
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(Bool:U: \topic, *%_)
Xliff ^^ Why is that error getting thrown?
m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[T], $A) }; }; }; }; my $a = $A but a[uint8]; $a.a 18:01
camelia ===SORRY!===
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(Bool:U: \topic, *%_)
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer, $A) }; }; }; }; my $a = $A but a[uint8]; $a.a
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
a used at line 1
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer, $A) }; }; }; }; my $a = $A but A[uint8]; $a.a
camelia CArray representation requires a typed array
in block <unit> at <tmp> line 1
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer, $A) }; }; }; }; my $a = $A but A[uint8];
camelia CArray representation requires a typed array
in block <unit> at <tmp> line 1
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[T], $A) }; }; }; }; 18:03
camelia ===SORRY!===
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(Bool:U: \topic, *%_)
Xliff ^^ That is the error.
Looks like it is triggered by the presence of Pointer[T]
m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[::T], $A) }; }; }; }; 18:04
camelia ===SORRY!===
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(Bool:U: \topic, *%_)
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer, $A) }; }; }; };
camelia ( no output )
Xliff Because ^^that works
jnthn jmerelo: Uff, I'm quite behind with mail. Will try and dig it out tonight.
dinner; bbl
sena_kun m: my $a = "FooBar"; $a.subst(/(\w+)/, { $0.lc }, :1st).say;
camelia foobar
jmerelo jnthn: thanks!
sena_kun why is it not "fooBar"?
d'oh 18:05
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[uint8], $A) }; }; }; };
camelia ( no output )
sena_kun m: my $a = "FooBar"; $a.subst(/(\w)/, { $0.lc }, :1st).say;
camelia fooBar
Xliff OK. So better question. How can I apply a role parameter to another role parameter? I think that's the problem I am running into 18:06
tony-o do you just want to apply a role to it after it's been instantiated?
Xliff m: role A[::T] { method a { say T; }; }; role B[::S] { also does A[S]; method b { self.a; }; };
camelia ( no output )
Xliff m: role A[::T] { method a { say T; }; }; role B[::S] { also does A[S]; method b { self.a; }; }; my $a = 1 but B[Int] $a.a 18:07
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3 b { self.a; }; }; my $a = 1 but B[Int]7⏏5 $a.a
expecting any of:
infix
infix stopper
postfix
statement en…
Xliff m: role A[::T] { method a { say T; }; }; role B[::S] { also does A[S]; method b { self.a; }; }; my $a = 1 but B[Int]; $a.a
camelia (Int)
Xliff m: role A[::T] { method a { say T; }; }; role B[::S] { also does A[S]; method b { self.a; }; }; my $a = 1 but B[Int]; $a.b
camelia (Int)
sena_kun .oO ( should I write a LDIF module or not ) 18:08
tony-o m: role X { method x { say "x"; } }; role Y { method y { say "y"; } }; my $a = 5; $a does X; $a does Y; $a.x; $a.y; 18:08
camelia x
y
tony-o can also write it: ($a does X) does Y; 18:10
and probably 30 other way
Xliff m: use NativeCall; my $a = Pointer[uint8].new; $a.deref = 9; 18:13
camelia Can't dereference a Null Pointer
in method deref at /home/camelia/rakudo-m-inst-1/bin/../share/perl6/sources/8660F65A7B3492675BB3B2058DB30E411A4C4E54 (NativeCall::Types) line 58
in block <unit> at <tmp> line 1
Xliff WTF? If I've instantiated a Pointer, how can it be null if derefed?
timotimo you've created a pointer, which has a memory location that can point to somtehing ... i think? 18:23
but you don't have the memory location to store stuff at yet 18:24
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[T], $A) }; }; }; };
camelia ===SORRY!===
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(Bool:U: \topic, *%_)
timotimo you'll usually want a CArray for that
Xliff timotimo: ^^ Why the error? 18:24
timotimo does the --ll-exception look like you'd expect if it happens inside method a? 18:25
Xliff m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer, $A) }; }; }; }; 18:26
camelia ( no output )
Xliff The problem is the "Pointer[T]"
timotimo i'm not seeing role A be used anywhere
Geth doc: b694b90752 | (JJ Merelo)++ | doc/Language/modules.pod6
Updates to current version of the language, closes #2698
synopsebot Link: doc.perl6.org/language/modules
Xliff role A doesn't need to be used to generate the error.
timotimo oh, so it's compile-time?
Xliff Yes. 18:27
Would this be a legitimate solution:
m: use NativeCall; my $A = CArray[uint8].new; $A[0] = 16; my $B = nativecast(Pointer[uint8], $A); role A[::T] { method a { given T { when uint8 | uint16 { say nativecast(Pointer[::(T)], $A) }; }; }; };
camelia ( no output )
Xliff All I see is that pushing the error from compile-time to run-time. 18:28
El_Che sena_kun: what do you do with ASN1 data? Planning on releasing that as a different module?
sena_kun El_Che, I have a MOP-driven type generator as a released module. :P
timotimo ok so it's exploding in parameterize inside nativecalll::types called by World's parameterize_type_with_args 18:29
maybe Pointer just needs to learn about this
sena_kun El_Che, so in my module I am doing, basically, "use ASN::META <file docs/ldap.asn plugin resources/asn-plugin>;" <- boom, I have all types created for me.
I am now adding operations like add/modify and so on, and fixing the issues with the whole stack along the way. 18:30
timotimo m: role Foo[T] { method a { Pointer[T] } }
camelia 5===SORRY!5=== Error while compiling <tmp>
Invalid typename 'T' in parameter declaration.
at <tmp>:1
------> 3role Foo[T7⏏5] { method a { Pointer[T] } }
sena_kun once I'll have something more or less useable as client, I'll ping.
timotimo m: role Foo[::T] { method a { Pointer[T] } }
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
Pointer used at line 1
timotimo m: use NativeCall::Types; role Foo[::T] { method a { Pointer[T] } }
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
Pointer used at line 1
timotimo m: use NativeCall; role Foo[::T] { method a { Pointer[T] } }
camelia ===SORRY!===
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(Bool:U: \topic, *%_)
timotimo mhm 18:31
Xliff There it is.
timotimo m: use NativeCall; role Foo[::T] { method a { BEGIN say T.REPR } }
camelia Uninstantiable
sena_kun afk
timotimo so the first thing that code does is try to ~~ the value against Int|Num|Bool 18:32
which it doesn't like very much
ugexe doesnt ACCEPTS(Bool:U: T) actually match (Bool:U: \topic, *%_) though? 18:33
El_Che sena_kun: impressive 18:34
Xliff timotimo: So wouldn't pushing that check to run-time fix the issue? 18:35
timotimo ugexe: it probably should, though perhaps that has to have a Mu in there? 18:36
m: use NativeCall; role Foo[::T] { method a { BEGIN say T ~~ Bool } }
camelia 5===SORRY!5=== Error while compiling <tmp>
An exception occurred while evaluating a BEGIN
at <tmp>:1
Exception details:
Cannot resolve caller ACCEPTS(Bool:U: T); none of these signatures match:
(Bool:D: Mu \topic, *%_)
(B…
timotimo m: use nqp; use NativeCall; role Foo[::T] { method a { BEGIN say nqp::istype(T, Bool) } }
camelia 0
timotimo or just do this, but then you'll get the exception it's supposed to throw when that check fails
which is "you can only use ints or strings or carray/cpointer/cstruct/cppstruct/cunion into a pointer" 18:37
Xliff OK, so nqp::istype(T, <type>) will NOT throw an error at compile time. 18:38
timotimo right
Xliff Still, that makes it so the code is more klunky. If I can push it to run-time and not mess with code, I will do that.
Thanks! # timotimo++
timotimo you may have to create that Pointer[T] manually by using Pointer.^parameterize 18:39
Xliff How would that be done? Are there write-ups for that online? 18:40
Or something in the code?
timotimo m: use NativeCall; role Foo[::T] { method doit { say Pointer.^parameterize(T).perl } }; Foo[uint8].doit 18:41
camelia NativeCall::Types::Pointer[uint8]
Xliff nativecast(Pointer[::(T)], $n.data) <- I will try this at run-time to see if it blows up.
timotimo use my code, that ought to do the trick
Xliff OK. Will try. 18:42
Gotta wait for the full recompile and add stats for AlexDaniel. :)
I shouldn't need the .perl though. Right?
timotimo no, that's just for show 18:43
AlexDaniel stats for me? 🎉🎉🎉
timotimo the Pointer.^parameterize(T) goes directly into the nativecast as first argument, or via a variable should also be fine
AlexDaniel but what are we talking about? :)
timotimo maybe stats about compilation speed or something? 18:44
Geth doc: a2254ac37c | (JJ Merelo)++ | 2 files
Eliminates grammar, moves to Cool, closes #2685
18:47
AlexDaniel I hope it's about malloc_trim
( github.com/MoarVM/MoarVM/pull/1072 ) 18:48
timotimo do note that "many small objects" don't necessarily go via malloc at all; only if they have some "unmanaged data" to them, like a CArray would 18:51
though i believe we use malloc for both hashes and arrays
AlexDaniel timotimo: yeah, any idea on how to benchmark this? 18:52
timotimo has anybody tried getting that visualizer to work from that ruby performance blog post about malloc_trim? 18:53
AlexDaniel I'd love to see something like a worst case scenario, when a looot of small objects need to be gc-ed
I don't think so…
timotimo AFKBBL 18:56
it'd be great if someone would try it; even if no success, a quick write-up of potential trouble would be helpful
AlexDaniel hides 19:04
Geth whateverable: 9392cbb3fb | (Lucas Buchala)++ (committed using GitHub Web editor) | xbin/Releasable.p6
Update GitHub blocker label
19:34
jmerelo Is there a way to type Unicode characters in comma? 19:35
sena_kun jmerelo, I don't think there is. We had a ticket to make it auto-convert operators to Unicode, but I honestly don't remember its state, likely it wasn't implemented enough to be merged. And it was like half of year ago or so iirc. 19:37
jmerelo sena_kun: thanks! I have been looking for a jetbrains plugin that does it, but the one there is seems outdated... 19:39
AlexDaniel lucasb: why was it renamed, btw? 19:45
not objecting, just wanna know the reasoning 19:48
lucasb AlexDaniel: sorry, I guess I did it out of personal taste to match the other labels. I can rename back to the previous state
unicodey char was distracting :D 19:49
but I guess I liked it. Really, I can rename back if you wish :)
AlexDaniel no it's fine, I remember someone saying that it looks too urgent
lucasb *but I guess you liked it (the unicode char)
AlexDaniel yeah I loved it xD
leave it as it is now 19:50
lucasb BTW, all the other renamings I did was out of experiment. The labels naming can be further tunned to better describe the issues they label. 19:52
AlexDaniel lucasb: ah yes, I renamed one of the new labels, I think 19:53
it was an acronym and even I didn't know what it meant 19:54
lucasb yeah, MMD :)
lembark Q: Should $*PROGRAM be computed at compile time or runtime? 20:54
For example: "constant BIN_FROM = ... $*PROGRAM" created in a moule us showing up as "/path/to/lib/FindBin.pm6" not the executable path at runtime. 20:56
Obvious fix: "my $bin_from = ... $*PROGRAM" but I'd have expeced $*PROGRAM in v6.d to mimic "$0". 20:57
masak lembark: when you use `constant`, you get `BEGIN` semantics; the rhs evaluates at compile time 20:58
lembark Odd because "constant IS-INTERACTIVE = $*PROGRAM-NAME eq '-e' | '-' | 'interactive';" is evaluated at runtime. 21:00
i.e., I get different results from perl -MFindBin -e 'say IS-INTERACTIVE and the same thing in a test that uses the module. 21:01
masak m: say "runtime"; constant G = say "constant"; BEGIN say "compile time"
camelia constant
compile time
runtime
masak ^ constant evaluates at compile time
lembark Q: Why would defining a constant on $*PROGRAM behave differently than $*PROGRAM-NAME? 21:02
masak it... wouldn't? :)
lembark Example: Tests based on IS-INTERACTIVE display the correct thing when run from different directories using perl -M and #! code. 21:03
I can almost wrap my mind around $*PROGRAM being the path to the specific .pm6 file (vs. the executable that invoked the compilation t/01-setup.t). 21:04
gfldex lolibloggedalittle: gfldex.wordpress.com/2019/03/25/i-...kudo-100x/ 21:07
AlexDaniel gfldex: ummm… 21:17
gfldex: what about gist.github.com/AlexDaniel/88b38af...3df31dd431 21:18
gfldex: lets you use whateverable to bisect things locally 21:21
gfldex AlexDaniel: at the top it says: AlexDaniel/bisect.p6 Secret 21:24
AlexDaniel: I didn't implement it in Perl 6 to make it easy to set up or clone a VM and start testing. 21:26
Otherwise I would have borrowed code from bisectable. 21:27
AlexDaniel also, you *can* use bisectable, just need to specify paths to all the modules 21:34
AlexDaniel gfldex: oh, and Blin is also using Whateverable, but it runs `zef test` to test things. Perhaps we can tweak it so that you can provide a custom script to test stuff 21:40
I filed this ticket: github.com/perl6/Blin/issues/11 21:43
actually, let me try to implement that real quick… 21:45
eh, how can I use :@foo in MAIN? 21:49
c: run <perl6 -e>, 「sub MAIN(:$foo) { say $foo }」, <--foo=42 --foo=50> 21:50
committable6 AlexDaniel, ¦run: «Cannot find this revision (did you mean “all”?)»
AlexDaniel e: run <perl6 -e>, 「sub MAIN(:$foo) { say $foo }」, <--foo=42 --foo=50>
evalable6 [42 50]
AlexDaniel this works but it's stupid
I want to slap an IO() coercer on it 21:51
e: run <perl6 -e>, 「sub MAIN(:@foo) { say @foo }」, <--foo=42 --foo=50>
evalable6 [42 50]
AlexDaniel o_o
ok nevermind
well, actually… 21:52
e: run <perl6 -e>, 「sub MAIN(Str :@foo) { say @foo }」, <--foo=42 --foo=50>
evalable6 (exit code 1) Usage:
-e '...' [--foo=<Positional[Str]>]
The spawned command 'perl6' exited unsuccessfully (exit code: 2)
in block <unit> at /tmp/z4gws0rAWF line 1
AlexDaniel gfldex: actually, I think it's going to be pretty cool! Gimme an hour 22:05
gfldex++
lizmat weekly: gfldex.wordpress.com/2019/03/25/i-...kudo-100x/ 22:07
notable6 lizmat, Noted!
AlexDaniel doodled something 22:12
let's see if it works…
AlexDaniel oooooooooooooooooooooooh 22:28
e: run <perl6 -e>, 「sub MAIN(:@foo) { say @foo }」, <--foo=42 --foo=50> 22:29
evalable6 [42 50]
AlexDaniel e: run <perl6 -e>, 「sub MAIN(:@foo) { say @foo }」, <--foo=42>
evalable6 (exit code 1) Usage:
-e '...' [--foo=<Positional>]
The spawned command 'perl6' exited unsuccessfully (exit code: 2)
in block <unit> at /tmp/OUsu1YzwBC line 1
AlexDaniel so you must provide more than one…
AlexDaniel e: run <perl6 -e>, 「sub MAIN(:@foo) { say @foo }」 22:33
evalable6 []
AlexDaniel hah, so zero is fine, two is fine, one is not?
github.com/rakudo/rakudo/issues/2797 22:35
ugexe the most Perl6 solution would be to tell the user to use --foo=42, 22:48
AlexDaniel hah 22:49
but the funny thing is that you can use :$foo, and that works… and that's very perl5 :) 22:50
ugexe but you can't type a list 22:51
m: sub MAIN(Str :$foo) { say $foo }; BEGIN @*ARGS = <a b>; 22:52
camelia Usage:
<tmp> [--foo=<Str>]
AlexDaniel ugexe: not sure I understand… can you type a list with @ ?
ugexe i thought so but apparently not 22:53
m: sub MAIN(Str :@foo) { say @foo }; BEGIN @*ARGS = <a b>;
camelia Usage:
<tmp> [--foo=<Positional[Str]>]
ugexe oh duh im using args wrong
not that it matters 22:54
m: sub MAIN(Str :@foo) { say @foo }; BEGIN @*ARGS = <--foo=a --foo=b>;
camelia Usage:
<tmp> [--foo=<Positional[Str]>]
Geth whateverable: c535eee829 | (Aleks-Daniel Jakimenko-Aleksejev)++ | lib/Whateverable/Bisection.pm6
Avoid LAST to work around some weird issue

Sometimes when run-bisect runs from multiple threads at the same time I am getting Nil in string context warnings. To me that can only mean that `$result<output>` is not what it is supposed to be, so there's a bug in rakudo. Working around it because I want to move on right now. Please feel free to investigate.
23:14
AlexDaniel dogbert17, timotimo: ↑ if you're interested
AlexDaniel greppable6: PREVIEW 23:25
greppable6 AlexDaniel, 66 lines, 14 modules: gist.github.com/1489b13cc240bdccea...3762472a07
AlexDaniel greppable6: d\.PREVIEW
greppable6 AlexDaniel, 58 lines, 11 modules: gist.github.com/239ab1d53f43662673...f0bd4df1fc
AlexDaniel gfldex: success!!! 23:36
it bisected it to this commit: github.com/rakudo/rakudo/commit/4f...d943651942
which is what you found too
Geth Blin: 6da7c3c36e | (Aleks-Daniel Jakimenko-Aleksejev)++ | 3 files
Add support for custom scripts

So that users can bisect arbitrary code. The code can depend on modules, in which case these have to be listed on the command line
  (e.g. for a script depending on WWW you should list WWW module,
dependencies will be detected automatically).
... (15 more lines)
23:46
AlexDaniel gfldex: \o/
Geth Blin: 4db69d0289 | (Aleks-Daniel Jakimenko-Aleksejev)++ | README.md
Mention custom scripts in the README
23:55
kybr is there a shrtcut for Str.split('') ... string to list of chars? 23:56
SmokeMachine m: say “bla”.comb
camelia (b l a)
SmokeMachine kybr: ^^
Geth Blin: 9ca64bfcc4 | (Aleks-Daniel Jakimenko-Aleksejev)++ | README.md
Tweak README
23:57