»ö« 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.
Xliff Getting the following attempting to build rakudo; 01:57
Can't locate object method "make_option" via package "NQP::Config::Rakudo" at /home/cbwood/Projects/rakudobrew/moar-master/tools/lib/NQP/Config/Rakudo.pm line 429 01:58
Xliff After following suggestion in commit msg 0acd27f44e9495c78af02c986d5bb7a5124c7caf, I am now getting the following error: 02:02
Found /home/cbwood/Projects/rakudobrew/moar-master/install/bin/moar version 2019.03-110-g081823ffc, which is too old. Wanted at least 2019.05-11-g248e298
melezhik How to wrire regexp for everything not '@' simbol apperaing more then once at least? 02:03
Xliff m: say $a = '@@ wadads'; say $a ~~ / (<-[@]>+)/ 02:04
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$a' is not declared
at <tmp>:1
------> 3say 7⏏5$a = '@@ wadads'; say $a ~~ / (<-[@]>+)/
Xliff m: my $a = '@@ wadads'; say $a ~~ / (<-[@]>+)/
camelia 「 wadads」
0 => 「 wadads」
Xliff m: my $a = '@@ wadads'; say $a ~~ / (<-[@]> ** 2..*)/ 02:05
camelia 「 wadads」
0 => 「 wadads」
Xliff m: my $a = '@@ w'; say $a ~~ / (<-[@]> ** 2..*)/
camelia 「 w」
0 => 「 w」
Xliff m: my $a = '@@w'; say $a ~~ / (<-[@]> ** 2..*)/
camelia Nil
Xliff melezhik: ^^ Only one, so two or more is working
m: my $a = '@@wbb'; say $a ~~ / (<-[@]> ** 2..*)/
camelia 「wbb」
0 => 「wbb」
melezhik thanks, Xliff:
what about capturing?
Xliff That is capturing. 02:06
'wbb' in $/[0] aka $0
melezhik m: my $a = qq{foo-@}; $a ~~ / (< - [ @ ] > ** 2..* ) / ; say $0 02:08
camelia 「-@」
Xliff <-[@]> ... you can' split it out like that
m: my $a = '@@wbb'; say $a ~~ / (<-[ @ ]> ** 2..*)/
camelia 「wbb」
0 => 「wbb」
Xliff ^ You can like that though
melezhik m: my $a = qq{foo-@}; $a ~~ / (<-[ @ ] > ** 1 ) / ; say $0 02:09
camelia 「f」
melezhik thanks. Xliff: I get the idea
m: my $a = qq{foo-@}; $a ~~ / (<-[ @ ] > ** 1..* ) / ; say $0 02:10
camelia 「foo-」
melezhik here we go ((=;
Xliff =)
holyghost good morning 02:15
I might take the day off, I just need to add tests to Bayes::Learn, after that I'll make docs for Game::QFG 02:16
Geth ecosystem: faa5c61765 | dmaestro++ (committed using GitHub Web editor) | META.list
Add Seq::Bounded to ecosystem
02:17
melezhik I have a foo=1,bar=2 string, I want to convert it to Hash 02:37
melezhik m: my $a = qq{foo@foo=1,j=1}; $a ~~ /"@" (\S+) $$/; say "$0".split(",").map({ $_.split("=") }).perl 02:37
camelia (("foo", "1").Seq, ("j", "1").Seq).Seq
melezhik so I need somehow "flattern" seq to array
and assign to hash
not sure how to do that
Xliff m: my $a = "foo=1,bar=2"; for $a.split(/,/) { s/(<-[=]>+'= 02:38
camelia 5===SORRY!5===
Unrecognized regex metacharacter , (must be quoted to match literally)
at <tmp>:1
------> 3my $a = "foo=1,bar=2"; for $a.split(/7⏏5,/) { s/(<-[=]>+'=
Unable to parse expression in single quotes; couldn't find final "'"…
Xliff m: my %h; my $a = "foo=1,bar=2"; for $a.split(/,/) { s/(<-[=]>+)'='(.+)/; %h{$0] = $1; }; %h.gist.say 02:39
camelia 5===SORRY!5===
Unrecognized regex metacharacter , (must be quoted to match literally)
at <tmp>:1
------> 3h; my $a = "foo=1,bar=2"; for $a.split(/7⏏5,/) { s/(<-[=]>+)'='(.+)/; %h{$0] = $1;
Unable to parse expression in subscript; co…
Xliff m: my %h; my $a = "foo=1,bar=2"; for $a.split(/','/) { s/(<-[=]>+)'='(.+)/; %h{$0] = $1; }; %h.gist.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in subscript; couldn't find final '}' (corresponding starter was at line 1)
at <tmp>:1
------> 3plit(/','/) { s/(<-[=]>+)'='(.+)/; %h{$07⏏5] = $1; }; %h.gist.say
Xliff m: my %h; my $a = "foo=1,bar=2"; for $a.split(/','/) { s/(<-[=]>+)'='(.+)/; %h{$0} = $1; }; %h.gist.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed replacement part; couldn't find final /
at <tmp>:1
------> 3>+)'='(.+)/; %h{$0} = $1; }; %h.gist.say7⏏5<EOL>
expecting any of:
method arguments
Xliff m: my %h; my $a = "foo=1,bar=2"; for $a.split(/','/) { /(<-[=]>+)'='(.+)/; %h{$0} = $1; }; %h.gist.say 02:40
camelia {bar => 「2」, foo => 「1」}
Xliff ^^
m: my %h; my $a = "foo=1,bar=2"; for $a.split(/','/) { /(<-[=]>+)'='(.+)/; %h{$0} = $1.Str; }; %h.gist.say
camelia {bar => 2, foo => 1}
cpan-p6 New module released to CPAN! Seq::Bounded (1.0) by 03DMAESTRO
Xliff m: my %h; my $a = "foo=1,bar=2,baz=3,name=Xliff"; for $a.split(/','/) { /(<-[=]>+)'='(.+)/; %h{$0} = $1.Str; }; %h.gist.say
camelia {bar => 2, baz => 3, foo => 1, name => Xliff}
melezhik I'd prefer the way where one assing resulting array to hash, letting Perl6 to do the rest of the job
Xliff melezhik: ?!? 02:40
That is perl6 doing the job. 02:41
melezhik not sure. does Perl6 forbid your to do like that 02:42
m: my %h = ("foo", "1", "bar", "baz"); say %h.perl
camelia {:bar("baz"), :foo("1")}
melezhik Xliff, your solution works I see. Sorry I'm just a bit "picky" here ((=: 02:43
Xliff :p
melezhik or perfectionist, whatever you call it ((=;
Xliff m: my %h; my $a = "foo=1,bar=2,baz=3,name=Xliff"; my %h = given for $a.split(/','/) { /(<-[=]>+)'='(.+)/; take $0; take $1.Str }; %h.gist.say 02:44
camelia 5===SORRY!5===
Word 'given' interpreted as a listop; please use 'do given' to introduce the statement control word
at <tmp>:1
------> 031,bar=2,baz=3,name=Xliff"; my %h = given7⏏5 for $a.split(/','/) { /(<-[=]>+)'='(.+)
Unexpected bl…
Xliff m: my %h; my $a = "foo=1,bar=2,baz=3,name=Xliff"; my %h = do given for $a.split(/','/) { /(<-[=]>+)'='(.+)/; take $0; take $1.Str }; %h.gist.say
camelia 5===SORRY!5===
Undeclared routine:
for used at line 1

Other potential difficulties:
Redeclaration of symbol '%h'
at <tmp>:1
------> 3 = "foo=1,bar=2,baz=3,name=Xliff"; my %h7⏏5 = do given for $a.split(/','/) { /…
Xliff m: my %h; my $a = "foo=1,bar=2,baz=3,name=Xliff"; %h = do given for $a.split(/','/) { /(<-[=]>+)'='(.+)/; take $0; take $1.Str }; %h.gist.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
for used at line 1
melezhik I just abit "obssesed" with the idea of coercing seqs to arrays
it should be easy, huh?
Xliff m: my %h; my $a = "foo=1,bar=2,baz=3,name=Xliff"; %h = do gather for $a.split(/','/) { /(<-[=]>+)'='(.+)/; take $0; take $1.Str }; %h.gist.say
camelia {bar => 2, baz => 3, foo => 1, name => Xliff}
Xliff melezhik: ^^
melezhik well, thanks, Xliff: let me find my the alternative, if any ... anyway thanks 02:45
Xliff OK! Good luck! 02:46
melezhik what about that Xliff: ? 02:47
m: my $a = qq{foo@foo=1,j=1}; $a ~~ /"@" (\S+) $$/; my %h = "$0".split(",").map({ $_.split("=") }).flat.flat; say %h.perl
camelia {:foo("1"), :j("1")}
melezhik flat.flat ... ha-ha ((=; 02:48
Xliff Looks good.
melezhik m: my $a = qq{foo@foo=1,j=1}; $a ~~ /"@" (\S+) $$/; my %h = "$0".split(",").map({ $_.split("=").flat }).flat; say %h.perl
camelia {:foo("1"), :j("1")}
melezhik so for evert split, you just a flat 02:49
so for evert split, you just add a flat
Xliff Yep.
melezhik anyway, thanks for help ((=; Perl6 community is always so friendly ((=;
Xliff yw 02:52
elcaro m: my $a = qq{foo@foo=1,j=1}; my %h = $a.substr($a.index('@')+1).split(',').map(|*.split: '='); say %h.perl;
camelia {:foo("1"), :j("1")}
elcaro actually..y 02:57
m: my $a = qq{foo@foo=1,j=1}; my %h = $a.substr($a.index('@')+1).split(/<[,=]>/); say %h.perl;
camelia {:foo("1"), :j("1")}
holyghost I've put docs in Game::QFG, version 0.1.9 04:08
cpan-p6 New module released to CPAN! Game::QFG (0.1.9) by 03HOLYGHOST 04:13
holyghost stupid bot 04:16
anyway, I'm going to the bar in a few hours, to get a coffee 04:19
It's 6:20 am here 04:20
I hope I can cope with the rule-based system in Game::QFG, I need to search for AI and learning and so on 04:21
The meaning is to have rules for NPCs characters and features 04:22
NPC == Non Player Character
The storyline should also be rule based
A semi-random story is e.g. in nethack 04:23
jmerelo releasable6: status 06:28
yoleaux 20 May 2019 18:26Z <sena_kun> jmerelo: hi! please, ping me whenever you'll be comfortable
20 May 2019 19:44Z <sena_kun> jmerelo: sorry, never mind me.
releasable6 jmerelo, Next release in ≈29 days and ≈12 hours. 1 blocker. 140 out of 422 commits logged (⚠ 2 warnings)
jmerelo, Details: gist.github.com/334b346e9bc1b4eaee...6380cb6727
jmerelo .tell sena_kun I'm back
yoleaux jmerelo: I'll pass your message to sena_kun.
jmerelo squashable6: status
squashable6 jmerelo, Next SQUASHathon in 8 days and ≈21 hours (2019-06-01 UTC-14⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
Geth doc/master: 4 commits pushed by (JJ Merelo)++ 06:51
El_Che morning 07:01
jmerelo El_Che: Morning!
holyghost gm 07:04
antoniogamiz o/ 07:07
antoniogamiz cd .. 07:53
ups
jmerelo antoniogamiz: :-)
chee i notice node.js's http library can listen on a unix socket, does anyone know if there's any such module for perl 6? 08:17
jmerelo chee: you mean, as part of the standard library?
tadzik Cro::HTTP is the cool thing these days and it can be an HTTP server 08:18
jmerelo chee: there are many HTTP-listening modules in Perl 6, including, as tadzik says, Cro::HTTP 08:18
holyghost a search for sockets and networking should get you to the docs of it 08:19
holyghost There's a CATCH based client-server system somewhere in the perl6 docs 08:19
chee jmerelo: i did check cro, but the only mention i saw of sockets was about websockets 08:21
chee sorry, that was meant for holyghost 08:21
or everyone really
tadzik chee: doc.perl6.org/type/IO::Socket::INET those are the regular sockets 08:22
that's just raw TCP thoughu :)
holyghost chee : it's not cro, what I meant, but tadzik's link should help out
use IO::Socket; etc 08:23
chee yeah ^.^, i'm wondering if there's an http module that will listen on an IO::Socket rather than an ip and port
oh
doc.perl6.org/type/IO::Socket::Async
sorry, i was unclear earlier. i meant a socket file 08:24
holyghost in C, fileno(int socket) you mean ?
*lol* I mean socket, int fileno(FILE *) 08:25
tadzik ooh, a unix socket, I missed that earlier in a conversatino 08:27
sorry, everything I said was wrong then :P
I don't think there's anything for that, except for using NativeCall or maybe Inline::Perl5 08:28
chee ahh, okay. is there no unix domain socket support at all in p6? 08:31
tadzik not that I know of, no :(
on the plus side, you're in a prime position to make history by implementing it ;) 08:32
chee :D 08:35
tadzik (been there done that :P) 08:36
tobs ++Kaiepi had unix socket support on their agenda last time I asked 09:10
Kaiepi i still do 09:11
yoleaux 21 May 2019 21:10Z <lizmat> Kaiepi: my latest version of the feed processor: gist.github.com/lizmat/cecd2801129...c9a8fe0ee7
21 May 2019 21:11Z <lizmat> Kaiepi: I think that combines the best of both worlds, please let me know if you need more info to integrate
Kaiepi it's the last thing i'm doing as part of my grant work though 09:12
i'll get started on it after i'm done with feed operators and after v6.e.PREVIEW is implemented since the first few things i need to do depend on it
tobs godspeed! 09:14
Kaiepi .tell lizmat your code looks pretty straightforward but what's the purpose of $!low-mark and $!high-mark? 09:28
yoleaux Kaiepi: I'll pass your message to lizmat.
lizmat high-mark is an indication of the maximum number of values that will be buffered 09:29
yoleaux 09:28Z <Kaiepi> lizmat: your code looks pretty straightforward but what's the purpose of $!low-mark and $!high-mark?
lizmat and low-mark is the number of elements in the buffer at which it will start filling again 09:30
the values are pretty arbitrary at the moment
it possibly makes sense to increase the high-mark to 1000 09:31
to avoid small size lists to avoid the parallelization overhead 09:32
Kaiepi why are they needed?
lizmat well.. the high-mark tries to adapt itself to an optimum size 09:33
if the load on the mapping is too low, it will raise the high-mark 09:34
if the load is too high, it will decrease the high-mark 09:35
lizmat Kaiepi: in an earlier version, I found that the reader would be reading values faster from the buffer than the writer could add them 09:39
so that's why the initial buffer filling
Kaiepi ahhh 09:41
ok
would using something like a semaphore work? 09:45
jnthn I think what we really miss is a way to make a Channel have a bound 09:48
jnthn So that pushing something into it can also block 09:48
Kaiepi in go you can create channels with a buffer length 09:53
if the number of values on the queue is equal to the buffer length, pushing blocks
jnthn Yes, same in Java, C 09:55
*C#, etc.
Something for us to have too, just nobody got around to it yet :)
Well, they did, but in the ecosystem... :)
And less efficiently than if we just support it "natively"
Kaiepi lizmat, there's one problem with your implementation 10:02
it assumes $source is a list of some sort when that's not always the case as used in the ecosystem 10:03
m: sub base36(Int $num --> Str) { $num.base: 36 }; say do { 35 ==> base36() } 10:04
camelia Z
Kaiepi maybe PROCESS-FEED would need to be a multi sub to handle those cases if we should keep that behaviour 10:05
chee Kaiepi: oh this is great news, re: unix domain sockets 11:01
lizmat Kaiepi: what are the cases where the source is not something that can provide an iterator? 11:03
Kaiepi: but indeed, making it a multi should cover that case 11:04
timotimo wakelift.de/p/f9314876-3251-461f-b6...0b3cc656b/ - i would appreciate proofreading <3 12:17
masak timotimo: nice! 12:38
I skimmed it -- didn't find any nits to pick
timotimo yay 12:39
cpan-p6 New module released to CPAN! Seq::Bounded (1.0.1) by 03DMAESTRO 12:40
sena_kun timotimo, ignore me right now, but shouldn't it be "An obligatory photo..."? 12:41
yoleaux 06:28Z <jmerelo> sena_kun: I'm back
timotimo sena_kun: maybe "The"? 12:43
sena_kun ah, yes, or this one
sena_kun tries to be better with articles, but has a long way ahead 12:44
jast I would keep it as it is 12:46
to keep with the standard form of the "obligatory X" meme 12:47
timotimo put in some extra stuff at the end 12:48
jast "The request was actually just to allow configuring only [...]" is a bit of a bumpy read 12:50
same paragraph: "complicated" has a negative connotation, maybe "detailed" or "in-depth" 12:51
timotimo refresh for different colors at the end
jast "While deciding upon what exactly I should build" - not a complete sentence 12:52
timotimo refresh, i reworded it
ah, yes
jast yeah, I like that better now
timotimo have a look at the new start of that paragraph 12:53
jast yeah, nice 12:54
structural thing: after the first example program, you describe frame vs sf. this is a little hard to follow because at that point you have seen sf but not frame in the example, yet you talk about frame first. if the syntax/meaning allows for it, I'd include both frame and sf in the example somehow, so that you can see both in action, making it easier to understand an explanation of how the two relate 12:55
timotimo sadly, frame can't go in this example
jast yeah, I had an inkling that it might not 12:56
you could either make it two examples, or skip over explaining 'frame' here and just focus on what 'static' means in this context
I mean, once I finish reading the paragraph I understand it all, but in the middle I'm a bit "???" 12:57
or you could explain the 'entry' line first, giving more context about this, before explaining frame vs sf 12:58
timotimo that's valuable input, i'll see if i can reword it
the thing with putting entry first that made me want to put it at the end instead is the big list of possible entry points i have below
jast which would make it mostly about re-ordering a few paragraphs
timotimo something's wrong with the font in the examples at the bottom 13:00
things just don't line up ...
jast how about something roughly like this... the 'entry' decides which stage of profiling the program is applied to. in this case, the 'profiler_static' means we're seeing a routine for the first time, before we enter any specific frame, so [...]. [...] these are the other types of entry points:
timotimo perhaps the font it's using is missing a few of the glyphs and is falling back to another one for those 13:01
timotimo yeah i like that suggestion 13:01
I'll give it a try after i defeat the font rendering at the bottom 13:02
jast font woes, sounds like fun
timotimo haha, when i set the font-family to "serif" the lines line up just fine
it just looks totally out-of-place
same for -webkit-pictograph, which wouldn't be cross-browser anyway 13:03
jast aside on eBPF for socket routing - the main use case I'm thinking of is virtual networks (but it's not something I've really looked into) 13:07
jast rest of the post looks good to me, and it's an interesting read, too 13:09
timotimo TYVM 13:10
with virtual networks you mean vlan?
jast I was thinking communication between virtual machines
timotimo ah 13:11
jast btw I would consider a different title maybe - it's a little vague right now
potentially this might become very flexible, but for now it's about profiling for the most part, I guess...
timotimo true, i just wanted to have a pun on the cat picture 13:12
"a close look at" would be another possibility
jast that pun went right over my head ;P
jast either way "MoarVM features" doesn't really say much 13:13
timotimo true
"allowing close control over"? 13:14
jast right now it's all about the profiler, isn't it?
timotimo true
jast A close look at controlling the MoarVM profiler 13:15
timotimo that should work
timotimo refresh please, i rewrote it using mostly your suggested text 13:21
jast okay, now you're explaining 'entry' twice, which is maybe not entirely necessary - but other than that, thumbs up ) 13:29
(I'm fairly picky btw :P)
lizmat jast++ 13:29
timotimo ah, of course, the line before the list and perhaps the first entry in the list want change, too 13:30
timotimo how's this? 13:31
also, i'm grateful for your pickyness :)
also, i'm not sure how to progress with the terminal output at the bottom >_< 13:32
lizmat looks good to me now 13:34
timotimo yes! i found a font that works 13:35
now my font-family is Consolas, Monaco, Monospace
lizmat even better
wish I could DDT to work on my Mac: I can't get the Terminal::Print dependency to install :-(
timotimo oh damn. but perhaps it'd be enough to just add whatever TERM you have to the whitelist 13:36
lizmat did that, didn't solve the problem
timotimo damnit
wanna try figuring it out together? 13:37
lizmat sure
I got a checkout of Terminal::Print locally
perl6 lib/Terminal/Print/Commands.pm6
timotimo when i run that i get a bunch of messages from 'tput: unknown terminal "xterm-kitty"' and the same for "rxvt-unicode-256color" 13:38
lizmat gives me a long list of: gist.github.com/lizmat/a966bc3b1de...215359f3f7
indeed
$ perl6 lib/Terminal/Print.pm6 13:39
===SORRY!===
Please update @valid-terminals with your desired TERM ('xterm-color', is it?) and submit a PR if it works
set | grep TERM
TERM=xterm-color
timotimo OK, when i add that it gives the exact same output, so it seems to find xterm-color just fine on my machine as well 13:40
lizmat added that to @valid-terminals
and get the ===SORRY!=== again on running lib/Terminal/Print.pm6 13:41
timotimo cleared all precomps just in case?
lizmat when I run it as "perl6 lib/Terminal/Print.pm6" there is no precomp involved ?? 13:42
timotimo do you have a -I or something? perhaps it's using a precomp in an unexpected location, or something installed to the system 13:43
lizmat nope, no -I
timotimo well it has to find the other module somehow, right?
lizmat ok, turns out all of the "unknown terminal" crap was just a smoke screen 13:45
lizmat zef install . --force-install fails with: Tried to use an undefined capability 'civis' of the terminal type 'xterm-color' 13:45
timotimo that's a lot more interesting already 13:46
civis makes the cursor invisible, cnorm makes the cursor normal
lizmat zef install . --force-install --/test did the trick (so far) 13:47
timotimo there's also ve and vi
if i understand correctly, ve is the same as cnorm and vi is the same as civis
this document i have here says that BSD follows the ve and vi conventions
which ... apple something something BSD something something darwin kernel something something 13:48
lizmat got it installed now,, timotimo++ for nudging me :-) 13:49
timotimo did you change civis and cnorm to the other thing? 13:52
lizmat doesn't like ve as a synonum for civis 13:53
Tried to use an undefined capability 've' of the terminal type 'xterm-color' 13:54
timotimo odd 13:56
so what does that terminal use to switch between invisible cursor, normal cursor, and block cursor?
lizmat I have no idea... 13:57
vrurg Here is output from infocap for xterm-256color: 14:01
yoleaux 21 May 2019 20:05Z <timotimo> vrurg: passing things it doesn't know about, Configure.pl just stays silent - we had --optimize=0 debug=3 in moarvm's Configure.pl and had a hard time figuring out why breakpoints weren't working/showing up in gdb; anything you can do?
vrurg bel=^G, blink=\E, bold=\E, cbt=\E[Z, civis=\E[?25l, 14:02
clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
Xliff \o
Did anyone get my messages about moar-master not compiling properly?
vrurg I see civis and cnorm.
Xliff colabti.org/irclogger/irclogger_lo...-05-22#l34 14:03
lizmat look for "submodule update" in the log
Xliff colabti.org/irclogger/irclogger_lo...-05-22#l43 14:04
lizmat: I ended up having to switch to moar-blead for the time being.
lizmat how is that different from master ? 14:05
Xliff Don't know. I just know that master kept dying when I tried to build it, and moar-blead went through clean. 14:06
lizmat sounds weird :-) 14:06
vrurg timotimo: did you pass --optimize and --debug=3 to rakudo's Configure.pl? It's not clear to me what happened and how it was expected to be.
Xliff lizmat: Yes. Yes it does.
vrurg Xliff: best is to try re-cloning from scratch, if you can. Sometimes things go out of sync. I sometimes just delete nqp directory and re-configure. 14:10
timotimo vrurg: we passed "--optimize debug=3" and we didn't get debugging, but we also didn't get a warning or an error
Xliff vrurg++: Thanks. I will see about that.
vrurg timotimo: My rakudo Configure.pl complains about unknown option optimize. Would it be possible for you to open a ticket? 14:13
I'll be away for a while and it seems like more information would be needed for me to follow. 14:14
timotimo it's the moarvm configure that gets it
OK
vrurg timotimo: Oh, I did nothing to MoarVM build. 14:15
timotimo oh, i see! 14:16
sorry about the noise, then :)
vrurg NP. I'm not even sure if it makes sense to re-do moar's build. 14:18
kawaii deployed our first production perl 6 app at $dayjob today :) 14:23
moritz kawaii: that's awesome. What does it? 14:25
kawaii moritz: gist.githubusercontent.com/kawaii/...display.p6 14:27
so, it's quite hacky, but we have a client who has a point-of-sale system, and when they scan a barcode their application sends a full HTML payload to a second screen that the customer sees (showing price, item photo etc), we needed a small listener app to basically rebuild the DOM with each new payload
tadzik cute :) 14:28
or should I say: kawaii? ;) 14:29
kawaii ;) 14:29
moritz kawaii: very nice 14:32
kawaii nice is probably not the right word, a simple hack but it works very well :)
moritz "works very well" and "simple" together meets my definition of "nice", even if it's not very elegant 14:37
timotimo lol i blogged: wakelift.de/2019/05/22/close-look-...-profiler/ 14:41
tadzik lol! 14:42
lizmat weekly: wakelift.de/2019/05/22/close-look-...-profiler/ 14:46
notable6 lizmat, Noted!
jast timotimo: the good news is you got my seal of approval now for the post :P 14:48
timotimo is there an image i can embed for that? :) 14:49
nadim_ hi, is it possible to get more info when one gets messages like "Cannot find method 'ann' on object of type NQPMu", a file and line? 15:15
jmerelo nadim_ there's a DEBUG environment variable you can use. It might be a bit too verbose. 15:16
timotimo huh? i haven't heard of that 15:17
nadim_ hehe!
just DEBUG=1 perl6 ...?
timotimo usually --ll-exception can get you a bit further, but that only works if you already get a stack trace, but it's too short
nadim_ that's what I got, nothing more
jmerelo nadim_: but that's an error that's deep down in NQP so it's better if you post the whole thing here or in StackOverflow... Or both 15:18
timotimo: export RAKUDO_MODULE_DEBUG=1
timotimo: it's for compilation but it could still be useful here 15:19
lizmat .ann points at something gone wrong in a grammar (there's a lot of \.ann() in src/Perl6
)
timotimo try --stagestats to see if it happens in, for example, the optimizer
nadim_ dumping a CallFrame has been challenging, between the Uninstantiable found it and that. not that 15:20
lizmat so it looks like something did not get initialized, and then it gets annotated, and then boom
nadim_ hmm, let me try to reproduce it, I was trying to make it go so far
timotimo nadim_: maybe you already saw, but i gave ddt a shout-out in my latest blog post :) 15:22
nadim_ here's the code that generates the error and the code that doesn't. nopaste.linux-dev.org/?1202183 15:27
timotimo: cool! url?
timotimo wakelift.de/2019/05/22/close-look-...-profiler/ 15:31
get_attributes just calls get_attributes and that's not part of the paste :( 15:32
well, not "just"
but, you know
nadim_ output when run with RAKUDO_MODULE_DEBUG=1 nopaste.linux-dev.org/?1202184 15:35
nadim_ timotimo: github.com/nkh/P6-Data-Dump-Tree/b...ee.pm#L805 15:38
that's the previous version but get_attributes is the same. unfortunatelly the old version will not dump a CallFrame, it breaks before it gets there. if if it is of interest I can make a branch but changing the code removed the error so I don't thnk it's in get_attributes 15:40
jmerelo nadim_: well, the last line is helpful...
nadim_ which one?
Ven`` \o 15:40
jmerelo nadim_: line #91 in the pastebin. But I was actually kidding. It might have some info, but it's hidden in so much stuff that's it's difficult to say. 15:41
nadim_ I kinda guessed you were joking ;) 15:42
nadim_ timotimo: /me bows down ... 15:45
jmerelo nadim_: that's so weird... timotimo found the solution? 15:47
timotimo what?
i don't think i did anything?
i was just about to say i don't see anything obvious, and that i would splatter the code with debug prints, maybe a call to DUMP or two
Ven`` we'll bow to you anyway
nadim_ haha, jmerelo, no, I thanked for the thanks in the blog entry
timotimo thanks for the thanks for the thanks
jmerelo bows too 15:49
anyway
nadim_: as timotimo says, get_attributes is calling a get_attributes sub?
nadim_ yes
jmerelo nadim_: which is right below...
and there's another _get_attributes... There are a bit too many *get_attributes*... 15:50
I don't see anything that might cause the error, which is probably a bug anyway. 15:51
um, you're defining @a and using it withing a try statement...
Can you define @a in 807 and then assign it a value in the next one? 15:52
@a is not exactly defined when you try and use it, I think...
timotimo true, that's a little bit odd 15:53
but the assignment should return the assigned value, so it *should* be fine
jmerelo timotimo: but you can simply use some other variable. Or none. the try block should return its last value, right? 15:54
timotimo: so simply eliminate @a = inside the try statement
nadim_ yes, I probably needed it as a sub somewhere (my guess is filter, you want power you have to pay for it). and it got complex when I started supporting NativeCall, etc ... blogs.perl.org/users/nadim_khemir/2...-side.html
jmerelo m: my @a = try { my @a = 3,7 } 15:55
camelia ( no output )
jmerelo m: my @a = try { my @a = 3,7 }; say @a
camelia [3 7]
jmerelo No, that's not it...
jmerelo m: my @a = try { @a = 3,7 }; say @a 15:56
camelia [3 7]
jmerelo m: my @a = try { 3,7 }; say @a
camelia [3 7]
nadim_ jmerelo: yes it looks like the <2a in the try is not necessary 15:57
nadim_ Mehhhhh! now nothing works anymore, I need to learn to commit faster! 16:00
jmerelo m: say (('DDT exception', ': ', "message"),) 16:09
camelia ((DDT exception : message))
jmerelo nadim_: is that kind of thing what you want? A list inside a list? 16:10
jmerelo nadim_: also, why don't you raise an exception if it's an exception? It might be better than detect some particularly formatted thing 16:10
TreyHarris Is there an at all well-known interlingual for programs that are run in "cmd [GLOBAL_OPTS] subcommand [SUBCOMMAND_OPTS] [args...]" style, like git, docker, etc.? In Perl I think they're most commonly called "App::Cmd-style", but that's obviously not an interlingual term 16:13
TreyHarris I've heard "command suite", but I don't think that's common enough--it's certainly not distinctive enough to search on it. I'm hoping there's a term such that, if I were using a new language whose ecosystem I'm not that familiar with, how I'd find if there were utilities for this CLI style, and what they are 16:15
nadim_ jmerelo: yes a list inside a list, it gets rendered as an element in the dump 16:20
jmerelo: the last thing I want when debugging something is the debug tool raising an exception it can't handle
nadim_ jmerelo: and since it's just display I believe it is abetter way to handle it. otherwise you get nothing at all, this way you get a partial dump 16:21
jmerelo nadim_: OK :-) 16:21
TreyHarris seems like "subcommand" is the word that frequently turns up what I'm looking for, but by no means 100% (it doesn't Google up the results I'd like to see in Perl 5 or 6, for instance, though it does turn up on-point results that might through concatenation get me what I want) 16:22
kawaii has there been much thought to type safety in perl 6? 16:23
nadim_ TreyHarris: No name I know of, I once wrote a module to handle this kind of interface, handling commands written indifferent languages, a wrapper of sort, I ended with App::Chained because I couldn't find a better name. 16:24
jmerelo kawaii: as in?
nadim_ TreyHarris: with this description: Front end to sub applications in a Svn/Git fashion 16:25
TreyHarris nadim_: *nod* 16:26
TreyHarris I was looking at the various packages ecosystem knows about and I was thinking--shouldn't it be possible with the new(ish) &ARGS-TO-CAPTURE to create a suite such that bin/foo is the executable calling Foo::&MAIN, and then dispatching commands like `bin/foo bar` to Foo::Bar::&MAIN, such that you leave the Perl 6 built-in opt handling basically intact? Just, given the cmdline `foo {@global_opts} $subcmd 16:37
{@subcmd_opts} {@args}`, before Foo::&MAIN, strip out everything after @global_opts and hang on to it, then run Foo::&MAIN and gather its arguments in a dynamic variable, then do some housekeeping (like, if you used a "terminal" global option, like `--help` or `-V`, _and_ there was anything left squirreled away, fail with USAGE) and replace the @*ARGS with ($subcmd, @subcmd_opts), then call Foo::Bar::&MAIN and
let it handle its arguments normally, too?
jmerelo TreyHarris: zef uses multiple dispatch for its subcommands, with the subcommand as first argument to MAIN. It's not possible to distinguish between flags for command and for subcommand, anyway 16:38
TreyHarris (of course, in practice, you'd probably want some intervening namespace, like Foo::Commands::Bar, etc., but that's trivial.)
nadim_ you want to be abble to displatch to external programs too, git allows you to add your own commands, sleek 16:40
TreyHarris jmerelo: Hmmm, yes, efficiently you may be right... but looking at &ARGS_TO_CAPTURE, I can see one way to do it: gather up all the known subcommands. Going right to left, look for a known subcommand. Grab the arguments beginning with that subcommand all the way to the right, squirrel them away, and try calling the top-level MAIN. If it fails, see if there's a known subcommand further left in the CLI, prepend 16:42
those args to the ones you squirreled away, and try calling MAIN again. If you never get a successful call, die with USAGE. But if you get a successful call, then you know the squirreled arguments are ones to the subcommand that occupies the head of the remaining args
TreyHarris nadim_: Putting aside jmerelo's good critique, there's a way: use environment variables for the global options, and if no subcommands match, call an external "main-subcommand" and see if it works. That's how git does it. Marrying that with the solution I just proposed seems difficult, though. 16:44
If you specify that the top-level MAIN can't have freeform arguments (it necessarily has no position arguments), only constrained ones, you can do the dispatching more efficiently because there will never be a case where it's ambiguous whether an argument whose value is a string exactly matching a subcommand name is a subcommand or an argument to some prior subcommand or flag 16:47
hrm, without monkey-patching augmenting, you can't do this in an importable package, though, can you? b/c the module has to mess with the commands' packages' namespaces 16:55
it will always be the case that a single use of augmentation anywhere in a program will have a performance hit on the entire program, right? 16:56
nadim_ timotimo: you know that when you have a very long dump you can get a folding UI in terminal, right? or generate ahtmlthat does folding too. Both are a bit primitive (I don't likedoing UI stuff much) but can help if you have a long output 17:06
ugexe you can only setup mainline once, so having multiple files with parts of the MAIN will not work 18:53
all MAINs must be in the same file
you can still call Foo::MAIN, you just don't get &MAIN, nor the USAGE to show the stuff for Foo::MAIN (if it wasnt the first MAIN loaded) 18:56
otherwise `bin/zef` would just be `require "bin/zef-fetch"; require "bin/zef-test"; ...`, where each command goes into its own bin/zef-command file 18:57
(oversimplifying a bit, but still)
timotimo hm, but can't you "use" multi candidates of the same name together to form your scope? 19:02
ugexe not mainline 19:03
mainline is setup once (the first time)
timotimo oh, huh
i didn't read the discussion that came before this, sorry
dogbert17 .seen tadzik 19:07
yoleaux I saw tadzik 14:42Z in #perl6: <tadzik> lol!
tadzik dogbert17: hi :) 19:08
dogbert17 hi tadzik, can I ask a question wrt rakudobrew? 19:09
when trying to nuke an installed p6 version I get: Undefined subroutine &Rakudobrew::Build::match_and_run called at /home/dogbert/.rakudobrew/bin/../lib/Rakudobrew/Build.pm line 132
tadzik dogbert17: shoot
dogbert17 already asked :) 19:10
tadzik :)
hm
sounds like a bug in v2
dogbert17 yeah; i'm using the new version
tadzik I guess go ahead and open a bug :) 19:11
I'm not very active in it these days, but patzim is on fire :)
dogbert17 consider it done, thanks for your time :)
I like rakudobrew, I find it very useful 19:12
hythm_ m: my @a; my %h; %h<a> = @a; say %h<a>.perl; should not the out put be `[]` instead of `$[]` ? 19:41
camelia 5===SORRY!5=== Error while compiling <tmp>
Bogus term
at <tmp>:1
------> 3y %h<a>.perl; should not the out put be 7⏏5`[]` instead of `$[]` ?
expecting any of:
argument list
infix
infix stopper
hythm_ m: my @a; my %h; %h<a> = @a; say %h<a>.perl; # should not the out put be `[]` instead of `$[]` ? 19:42
camelia $[]
ugexe m: my @a; my %h; %h<a> = @a; say %h<a>.gist;
camelia []
hythm_ m: my @a = 1, 2; my %h; %h<a> = @a; say %h<a>.elems 19:46
camelia 2
hythm_ aah, i was thinking $[] in .perl means array is itemized 19:47
xinming Anyone here has hints on what is the best way to share data with python with json? 20:00
I'm thinking to write a socket server, and let python to connect, But I'm not sure wether this is the best way to do. 20:01
I wrote a small bot with perl6, and I wish to write a query infos from the bot in perl6, exchange data with python. 20:02
ugexe you could also use a MQ
xinming rabbit mq?
ugexe i imagine any of them will do
lizmat is Inline::Python not an option ?
xinming ugexe: Thanks for the hint.
lizmat: No, Since there will be a big framework using python. 20:03
lizmat too bad :-)
xinming I'll write a small plugin in python, to let python to query the data from perl6. 20:04
tobs hythm_: I think it's exactly that, itemized.
xinming After I read python, I feel python is really a good programming language for practising typing....
ugexe i'd like to see a pythonista out type me on symbols 20:05
tadzik they may win on : ;) 20:08
hythm_ tobs: yes right, so assigning an array to a hash key itemizes the array... 20:12
but why? 20:13
lizmat because a value in a Hash is an item
tobs the hash itemizes its contents
hythm_ ok. noted. 20:14
tobs I like to think that an Array is just a List which achieves mutability by storing Scalar containers as elements. The same for Hash and Map. 20:15
I wonder if that's (even technically) a correct picture. lizmat?
lizmat tobs that is almost correct: it is true for Map vs Hash 20:16
tobs cool, thanks
lizmat but in the case of List vs Array: a List *can* contain a container
ugexe note %h<foo> := @a is not the same as %h<foo> = @a 20:17
lizmat m: my $a = (1,my $ = 42,3); dd $a; $a[1] = 666; dd $a # tobs
camelia List $a = $(1, 42, 3)
List $a = $(1, 666, 3)
tobs m: my $a = %(a => 1, b => my $ = 42, c => 3); dd $a; $a<b> = 666; dd $a 20:18
camelia Hash $a = ${:a(1), :b(42), :c(3)}
Hash $a = ${:a(1), :b(666), :c(3)}
tobs ah, and in a hash, a Pair can contain a container value
oh no, wait 20:19
I meant to make a Map
m: my $a = %(a => 1, b => my $ = 42, c => 3).Map; dd $a; $a<b> = 666; dd $a
camelia Map $a = $(Map.new((:a(1),:b(42),:c(3))))
Cannot change key 'b' in an immutable Map
in block <unit> at <tmp> line 1
tobs huh
well, it matches what you said exactly. 20:20
lizmat tobs: worked a lot on that part of the internals over the years :-) 20:32
hythm_ general question: lets say I want to connect to two package repositories, make a query for a package, combine the result from all repos and process it 21:15
what im thinking is to create an Array of Cro::HTTP:Client (with specific base-uri to each repo). and call @a>>.get. then process the result 21:17
timotimo Cro::HTTP::Client can't be used for multiple things at once?
sena_kun hythm_, what is the exact question? the approach you described is doable. 21:19
hythm_ im not sure, ill check that
jnthn If you're not re-using it for multiple requests, there's not that much point making an instance
hythm_ the exact question is, is there a better way to do that? like the way described in "array based objects" advent post? 21:20
let me rephrase 21:22
sena_kun if you can afford it, you can run e.g. `zef info Foo::Bar` and then collect its output, as zef will collect and process metadata for you. if you don't want to rely on something external like this, using Cro::HTTP::Client will do.
tbrowder hi, p6 21:24
timotimo hi TB
tbrowder timotimo: hi!
i'm looking at using win 10 (yuck) to intro folks to p6. can inline::perl5 work there? 21:26
timotimo as long as there's access to a compiler that can build the p5helper, probably. also it needs a perl5 built with "multiplicity", so you'll potentially have to build your own perl5 anyway 21:26
Xliff jnthn: Any further thoughts on github.com/croservices/cro-http/pull/39 21:31
jnthn Xliff: Merged, thanks 21:36
Xliff \o/ 21:36
jnthn: You're welcome. 21:37
tbrowder wouldn't a complete p5/p6 win 10 installable be a good thing for marketng 21:45
*marketing? for p5 and p6?
probably 21:46
ab6tract o/ 21:46
yoleaux 24 Mar 2019 22:44Z <japhb> ab6tract: Saw the follow up email, thanks! SGTM, but can't work on it right now because of $day-job stuff. I'll keep it on my back burner for fun coding time though. :-)
timotimo could be, but isn't building a perl 5 distribution a bunch of work?
i mean, if you're on win10, why not use the built-in linux compatibility stuff 21:47
tbrowder for one thing, i'm trying to deal with very restrictive win 10 networks like local county and city governments that don't like to change anything. for instance, our new senior center has no non-ms programs, and anything else has to be runnable in the edge browser. 21:50
timotimo ah, i see
hythm_ apology for the delay, i have created SO questionstackoverflow.com/questions/562654...of-objects 21:50
tbrowder timotimo: thnx 21:51
timotimo sorry, i haven't a clue :( 21:52
hythm_: that's fine, but it's a bit wordy; personally, i would perhaps not even have OO in there at all 21:54
timotimo if you have an array-based object, you can't have attributes on top of the array storage 21:55
(because arrays are arrays, not general objects, and general objects have attributes) 21:56
hythm_ timotimo, the reason i started with OO is due to after making a request and getting result pack, i would follow that with other requests for every package dependencies , and so on. so i though OO would make it more managable 21:57
aah makes sense
ugexe github.com/ugexe/zef/blob/master/l...ory.pm6#L8 21:58
hythm_ thanks ugexe. checking the method... 22:00
timotimo i suppose that makes sense. will it be fine to look up dependencies of a package first found in A in B?
if you have p6c and cpan for example, would finding JSON::Fast in p6c mean that its dependency Make::Very::Fast would only be searched for on p6c? 22:01
(because you're throwing out duplicates with the unique thing)
if comparing the dists with eqv like that, then the dists can't actually have any data in it that says where it comes from, or else you'll never kick out packages that are "the same" from different ecosystems
hythm_ timotimo, yes it should be fine to get depenedencies from different repo, 22:03
for example if someone hosts a small local repo for a few packages, it would be nice to resolve deps from other repos as well 22:04
timotimo right-o
don't forget we have not only a module's name, but also its authority, which has the ecosystem it comes from as part of the name 22:05
i.e. there are packages with github:timo and cpan:TIMOTIMO
hythm_ aah right, i just tried to make something quickly, probably will end up changing the whole 'unique' part 22:07
also worth noting this is more for Linux packages, like deb and rpm, not for cpan or pip 22:08
timotimo OK
do you know about the specs we have for "native" dependencies? to be put into META6.json? 22:09
ugexe race map race reduce
hythm_ i dont know about that, link? 22:10
timotimo do we have race reduce? 22:11
actually i'm not sure where that document lives. is it on design.perl6.org? i think that page is down still?
ugexe m: say race reduce { $^a }, 1, 2, 3; 22:12
camelia Too many positionals passed; expected 1 argument but got 2
in code at <tmp> line 1
in block <unit> at <tmp> line 1
hythm_ does load for me, but i know where to look now, thanks. 22:14
ugexe one day we will sneak the dependency name parser into somewhere... CompUnit::DependencySpecification.from-string maybe github.com/ugexe/zef/blob/master/l...m6#L13-L22 22:16
it will eventually be a requirement for emulates/supercedes/etc
ugexe if someone wants to write it in nqp they should totally do it 22:21
:auth<First Last [email@hidden.address] :) 22:24
timotimo do we want to have something like webfinger so there's like a bar.net/.well-known/perl6-module-a...ename.json 22:27
you know, for reasons 22:28
a DNS entry :D 22:29