»ö« 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 Zoffix on 25 May 2018. |
|||
geekosaur | Juerd, if you do reproduce it at some point, what does "locale" report in the shell at that point? | 00:00 | |
tjhat shell, not a different one | |||
Juerd | juerd.nl/i/4e15b239d6b33c973af964745ad712ac.png but still haven't been able to reproduce | 00:01 | |
geekosaur | in fact… stay in p6 when it happens and run: shell 'locale' | ||
Juerd | I still have the same perl6 running but it hasn't happened again | ||
shell 'locale' gives the same output | 00:02 | ||
geekosaur | probably only happens when something is initted the first time | ||
doesn't look like that should be a problem. I think | 00:03 | ||
Juerd | Even if I replay the entire session it doesn't reproduce the internal error | ||
geekosaur | lovely. thta sounds like some kind if memory corruption and it landed somewhere else | 00:08 | |
00:11
lizmat joined
00:16
lizmat left
00:21
zachk left
01:03
MilkmanDan left
01:11
vike1 joined
01:13
kurahaupo_ left,
kurahaupo joined
01:26
markoong left,
markoong joined
01:27
markoong left
01:28
markoong joined
01:32
jeromelanteri joined
01:33
markoong left
01:38
espadrine left,
molaf left
01:41
mcmillhj joined
01:51
molaf joined
01:54
perlpilot joined,
kalkin--- joined
01:55
mcmillhj left
|
|||
perlpilot | Here's something crazy that happened today ... my youngest children (twins, boy + girl) asked me about programming. Since they use Windows, I downloaded notepad++ and the windows version of rakudo and showed them a few things. | 01:55 | |
raschipi | How old are they? | 01:56 | |
perlpilot | Just now (about 6 hours after I first showed them stuff), I go to see what my son is doing and he a a Perl 6 file in notepad++ with a grammar that he had typed in from someone's P6 talk | ||
raschipi, 12 | |||
raschipi | And it's not crazy, it's natural for children to ask about what their parents work on, I think. | 01:57 | |
perlpilot | that last sentence was the crazy part :) | ||
geekosaur | still not very | ||
pop onto the web, look for interesting examples | |||
perlpilot | Since I first showed them stuff, he's been on google and youtube and whatever he can find to learn more perl 6. | ||
geekosaur | …bite off more than you can chew, most of the time >.> | ||
01:58
kalkin-- left
|
|||
perlpilot | I only showed them about scalars, arrays, outputting stuff, if statements, simple looping, etc. and he's taken off with all the things he wants to figure out. | 01:59 | |
It still seems crazy to me. | |||
Quite unexpected. | |||
raschipi | jmerelo will wanna hear about them having p6 as their first language. | 02:01 | |
perlpilot | I was thinking about getting his book for them to learn from | ||
geekosaur | sounds entirely expected to be, tbh | ||
to me | |||
02:02
fake_space_whale joined
|
|||
geekosaur | at least, if it piques their interest | 02:02 | |
perlpilot | yeah, you're right ... I'm probably just comparing their learning programming to my learning programming ... 35 years ago from a book about BASIC. They've got way more resources at their disposal | 02:03 | |
But also, I have another data point to compare at well. Their older brother was 15 and taking a class in school that used python, so i tried teaching him programming with python (it was the first time he showed any interest). It didn't exactly "stick" with him. | 02:07 | ||
geekosaur | different strokes | 02:08 | |
02:08
jeromelanteri left
|
|||
raschipi | I think it's due to ludic learning. | 02:12 | |
02:17
MilkmanDan joined
|
|||
raschipi | perlpilot: awesome history though, even if we don't find it surprising. | 02:23 | |
AlexDaniel | perlpilot: what about syntax highlighting? According to github.com/perl6/user-experience/issues/19 notepad++ does no syntax highlighting for perl6 files, is that correct? | 02:24 | |
perlpilot | It does appear to do some simple highlighting for perl6 files | 02:25 | |
Well ... files that end in .p6 (I didn't try .pm6 yet) | 02:26 | ||
AlexDaniel | huh | ||
perlpilot | perl6 doesn't show up in their list of file types though | 02:27 | |
AlexDaniel | perlpilot: btw, I have a bunch of stuff done for sake :) | 02:33 | |
was a bit distracted by things in the last two days so didn't even manage to push anything :( | 02:34 | ||
perlpilot: but otherwise it is looking great :) | |||
perlpilot | cool | ||
02:36
fake_space_whale left
02:41
kurahaupo_ joined
02:44
kurahaupo left
02:47
kurahaupo_ left
02:48
perlpilot left,
kurahaupo joined
02:52
ufobat_ joined
02:54
kybr left
02:55
ufobat left
03:02
raschipi left
03:04
Sgeo_ joined
03:26
lookatme_q joined
03:27
lookatme left
03:32
molaf left,
kurahaupo left
03:39
eliasr left
|
|||
buggable | New CPAN upload: IP-Random-0.0.7.tar.gz by JMASLAK modules.perl6.org/dist/IP::Random:cpan:JMASLAK | 03:44 | |
03:56
BenGoldberg left
03:57
nopl joined
03:58
Popov_ joined
04:05
gabiruh joined
04:07
mcmillhj joined
04:09
benjikun left
04:12
mcmillhj left
04:25
skids joined
04:33
psychoslave joined
04:48
alpha6 joined
04:50
curan joined
05:04
skids left
05:11
kaare_ left
05:20
kurahaupo joined
05:21
sauvin joined
05:29
jmerelo joined
05:34
[Sno] left
|
|||
jmerelo | o/ | 05:34 | |
05:36
wamba joined
05:38
benjikun joined
|
|||
benjikun | Does anyone know if there are there any modules built for sending emails w/ Perl6 | 05:39 | |
yoleaux | 28 Jun 2018 11:25Z <Zoffix> benjikun: Suggestions for next iterations of the survey: (1) For most wanted feature, invite people to be as specific as possible. 50 people saying "performance" is a lot less useful than a single person saying "performance of custom ops". (2) Add a comment field at the end "Suggestions to improve future versions of this survey"... ATM I don't even know if you're the right person to send this suggestion | ||
28 Jun 2018 11:25Z <Zoffix> benjikun: to. Like who's the author of the survey? | |||
05:41
kurahaupo left
05:42
xtreak joined
|
|||
benjikun | .tell Zoffix I'll keep those in mind for next time, me and several others from this IRC channel thought up the questions in the June 2018 survey (AlexDaniel and jjmerelo being some I remember). | 05:43 | |
yoleaux | benjikun: I'll pass your message to Zoffix. | ||
jmerelo | benjikun: I really didn't have much to think but thanks for the reference :-) | 05:55 | |
benjikun: it's going very well, BTW. More than 200 answers... | |||
benjikun | Mhm, can't wait to get the next one to be able to see how many new users we get in how much time | 05:58 | |
jmerelo | benjikun: you want to do it monthly? | 06:00 | |
BTW, here's the chart for files created per user in the Perl 6 repository www.google.com/fusiontables/DataSo...W4__ygnKTC | |||
benjikun | jmerelo: Not sure yet, it would be nice for sure | ||
Do you think everyone would do it every month? | |||
jmerelo | benjikun: probably quarterly would be less tiresome | 06:01 | |
06:01
kurahaupo joined
|
|||
jmerelo | Here's another view: www.google.com/fusiontables/DataSo...4__ygnKTC, including a pie chart. 64% of the files were created by [Coke] | 06:02 | |
06:02
kaare_ joined
06:03
hami joined
|
|||
jmerelo | Average score for the documentation is not at 6.87. That's a B- | 06:11 | |
06:12
hami left
|
|||
benjikun | jmerelo: I don't have permission to view that page | 06:13 | |
jmerelo | benjikun: try now www.google.com/fusiontables/DataSo...W4__ygnKTC | 06:23 | |
benjikun | works now :) | ||
buggable | New CPAN upload: Text-BorderedBlock-0.1.0.tar.gz by TYIL cpan.metacpan.org/authors/id/T/TY/...1.0.tar.gz | 06:24 | |
06:26
diegok joined
|
|||
jmerelo | Hey, diegok ! | 06:26 | |
06:31
diegok left
06:43
domidumont joined
06:44
darutoko joined
06:47
sno joined,
kurahaupo left
06:49
domidumont left,
domidumont joined
|
|||
jmerelo | Another illustration on the Perl 6 repo: days needed for 100 commits github.com/JJ/TPF-Grant/blob/maste...ts-log.png | 06:51 | |
Lately it hovers around ~ 10 days, but a few commits ago was the second best ever: 3 odd days. Best ever, you see the dip, 2 days and change. | 06:52 | ||
06:52
diegok joined
06:59
diegok left
07:01
diegok joined
07:02
robertle joined
|
|||
jmerelo | benjikun: did you close the survey? Do you intend to write some report? | 07:06 | |
benjikun | jmerelo: Yeah, I made a GitHub repo under perl6/p6survey with the final results. | ||
jmerelo | benjikun: great! | 07:07 | |
benjikun | :) | ||
07:15
lizmat joined
07:23
sno left
07:26
ufobat_ left
07:34
pmurias joined
07:35
sno joined
07:39
lookatme_q left
07:42
pmurias left
07:46
pmurias joined,
jmerelo left
07:49
Tison joined
07:51
xtreak left
07:52
xtreak joined
07:59
perigrin left
|
|||
cog | benjikun, the page "what platforms..." does not display the platform names (as displayed on chrome/ubuntu) | 08:00 | |
benjikun | cog: Put your mouse over the bars | ||
08:02
perigrin joined
08:03
wamba left
|
|||
cog | thx | 08:04 | |
benjikun | np :) | 08:05 | |
Tison | nqp: my $y := 42; $y.defined() | 08:07 | |
camelia | Cannot find method 'defined': no method cache and no .^find_method at <tmp>:1 (<ephemeral file>:<mainline>) from gen/moar/stage2/NQPHLL.nqp:1566 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:eval) from gen/moar/stage2/NQPHLL.nqp:1805 (… |
||
Tison | github.com/perl6/nqp/blob/9eda6a02...qp#L82-L84 | ||
We do have a `defined` method in NQPMu, why NQP complains that there is no? | 08:08 | ||
or $y is not a NQPMu? which is more strange | |||
08:13
zakharyas joined
08:15
rindolf joined
08:17
xtreak left,
Tison left
08:20
Tison joined
|
|||
Tison | It blocks this fix and I'll appreciate it for any help (github.com/perl6/nqp/commit/255b8d...8de0d9a76) | 08:21 | |
Tison have to logout | 08:22 | ||
08:22
Tison left
08:24
wamba joined
08:26
wamba left
08:27
benjikun left,
wamba joined,
wamba1 joined
08:28
wamba1 left,
wamba left,
wamba joined
08:29
g- left
08:39
g- joined
|
|||
tyil | is there a tool to convert all texas ops in a perl 6 file to their unicode equivalents (if possible) | 08:44 | |
lizmat | not afaik (module opportunity!!) | 08:49 | |
pmurias | shouldn't it be a Perl6::Tidy feature? | 08:50 | |
El_Che | (I would prefer the other way around, if you're writing a modules anyway :) ) | 08:51 | |
08:51
xtreak joined
|
|||
tyil | I'm writing plenty of modules, nothing for this (yet) tho | 08:51 | |
I'm testing out comma, but it doesnt automatically convert texas to unicode (yet?), which I had in vim | 08:52 | ||
and everyone agrees that unicode ops are awesome | |||
so I'm looking for an alternative that's easily used to convert texas to unicode ops now | 08:53 | ||
buggable | New CPAN upload: Object-Trampoline-0.0.2.tar.gz by ELIZABETH modules.perl6.org/dist/Object::Tram...:ELIZABETH | 09:04 | |
El_Che | tyil: ** - 1 | 09:05 | |
:) | |||
tyil | that would be so much prettier with superscript - 1 and leaving out the ** | ||
09:24
parv joined
09:32
xtreak left
09:34
HaraldJoerg joined
09:37
curan left,
sena_kun joined
|
|||
jkramer | What's a texas op? | 09:37 | |
09:38
curan joined
09:39
domidumont left
|
|||
robertle | an ascii variant of a unicode op | 09:39 | |
jkramer | Is that the official term? I've never heard that before :) | 09:40 | |
robertle | so eg 'atomic-inc-fetch', for which there is also a neat unicode one | ||
I can't type the unicode one however, since I'm from texas (apparently) | |||
jkramer | I don't get it, must be some inside joke I guess? :) | 09:45 | |
robertle | perhaps not a joke, but just lack of a better name | 09:49 | |
09:50
jmerelo joined
|
|||
robertle | but many operators have two ways to write them: one using unicode and one using a narrow character set that you can easily type on a US keyboard | 09:50 | |
09:51
aindilis left
|
|||
jmerelo | robertle: all of them, in fact. | 09:52 | |
lizmat | jkramer: texas op is the old name of ascii op | 09:53 | |
jkramer: it *was* an inside joke, deemed to be too inside so it was removed as a reference: instead "ascii op" is used now | 09:54 | ||
09:54
sno left
|
|||
jkramer | Thanks for the clarification :) | 09:55 | |
10:00
wamba left,
aindilis joined,
wamba joined
10:17
Popov_ left
10:20
sarna joined
10:25
sarna left,
xtreak joined
10:27
sarna joined
10:28
Tison joined
10:30
robertle left,
sno joined
10:36
wamba left
|
|||
sarna | hey, I have a list of things and want to call a function that would take things from this list as arguments. is there an easy way of doing this? | 10:40 | |
tadzik | |@args should do what you want, iirc | 10:41 | |
sarna | foo(bar, @a) -> bar(@a[0], @a[1]..) | ||
oh thanks, I'll look into it :) | |||
moritz | correct | ||
tadzik | m: sub a($a, $b, $c) { $a + $b + $c }; my @args = 4, 5, 6; say a(|@args) | ||
camelia | 15 | ||
sarna | where can I find docs on this? | 10:42 | |
jmerelo | sarna: in the docs :-) docs.perl6.or6 | 10:43 | |
sarna: look up "Signatures" | |||
tadzik | docs.perl6.org/routine/| | ||
tadzik is mildly amused that this is a valid URL | |||
sarna | jmerelo: ah thanks, I forgot how these things were called :) | 10:44 | |
tadzik: nice | |||
tadzik | I like your nickname, are you aware of its polish meaning? :) | 10:45 | |
sarna | tadzik: yeah, as you can see I'm half-polish myself | ||
tadzik | ah, that explains it :) | ||
jmerelo | tadzik: It would mean "itch" in Spanish. What does it mean in Polish? | ||
sarna | (the other half is polish too) | ||
tadzik | jmerelo: it's "roe", the animal | ||
sarna | jmerelo: roe deer | ||
tadzik | I didn't actually know the english word until I checked it just now | 10:46 | |
jmerelo | tadzik: definitely more beautiful than itch. | ||
sarna | same, I kept saying "deer" until I realised it's a different anumal | ||
tadzik | quite :P | ||
sarna | jmerelo: well, I prefer to link its spanish meaning with a Bukowski's poem | 10:47 | |
"excuses" | |||
"burning itch from hell" that pushes artists to be creative sounds way better than rabies | 10:49 | ||
El_Che | jmerelo: it's not "itch", it "scabies" | 10:50 | |
sarna | scabies! | ||
not rabies. heck, haven't woken up yet | |||
El_Che | I would post a link to the little guy, but I won't :) | ||
thank me later :) | |||
jmerelo | sarna: actually, that's one of the drivers of free software. Scratch one's itch. | ||
sarna | El_Che: little guy? | 10:51 | |
jmerelo | El_Che: OK, technically it's scabies, but it's more generically used meaning "itch" | ||
El_Che | jmerelo: you sound like microsoft: the GPL is like scabies | ||
:) | |||
jmerelo | El_Che: Like "Sarna con gusto no pica". You can't get scabies _and_ like it. | ||
sarna | jmerelo: :D | ||
El_Che | jmerelo: in Spain, a smallish far-away country in the hipanic worl community | ||
:) | |||
world | |||
jmerelo | El_Che: :-) | 10:52 | |
El_Che: which has proceeded, against all previews, to the next phase in the World Cup | |||
El_Che | I must close the google images page now | ||
jmerelo: yes, Spain can do so much better | |||
jmerelo | El_Che: and much worse... But congrats, Belgium has gone ahead too :-) | 10:53 | |
10:53
Zoffix joined
|
|||
El_Che | nowadays is better than Germany good enough | 10:53 | |
sarna | El_Che: where are you from? if you don't mind me asking | ||
El_Che | sarna: .be, with hispanic roots | 10:54 | |
jmerelo: I watched the Chile-Spain match in Lond 4 years ago | 10:55 | ||
sarna | El_Che: I see :) | ||
10:55
dustinm` joined,
aindilis left
|
|||
El_Che | sarna: I went back to uni (without attending classes) in order to write spanish, because my education was in dutch | 10:56 | |
jmerelo | El_Che: Hey, I was in London too! On my way from the airport, actually :-) | ||
El_Che | lol | ||
I was ther for work | |||
but we found a South-American place full with Spanish people :) | 10:57 | ||
it was nice | |||
I almost mixed a plane to Australia from London | |||
Zoffix | .tell Tison don't know much about it, but I'd assume 42 is an unboxed int and not an object, which is why it ain't got that method and I'd presume there's no auto-boxing in nqp, like we got in Perl 6. For example, nqp::objprimspec($y) returns 1 (for objects it's 0). You can just write nqp::isconcrete($y) instead of .defined (in nqp at least, in Perl 6 .defined is different). Or if you have to use .defined then | ||
yoleaux | 05:43Z <benjikun> Zoffix: I'll keep those in mind for next time, me and several others from this IRC channel thought up the questions in the June 2018 survey (AlexDaniel and jjmerelo being some I remember). | ||
Zoffix | say(nqp::objprimspec($y) || $y.defined) | ||
El_Che | we were watching the penalies | ||
yoleaux | Zoffix: I'll pass your message to Tison. | 10:58 | |
El_Che | finale | ||
Zoffix | .tell Tison say(nqp::objprimspec($y) || $y.defined) | ||
yoleaux | Zoffix: I'll pass your message to Tison. | ||
El_Che | it takes some time to your brain to recognize they are calling your names through the speakers | ||
jmerelo | El_Che: He. Also, pronunciation might not help | ||
10:58
aindilis joined
|
|||
sarna | El_Che: in poland I was stuck with german :( | 10:59 | |
Tison | yes | ||
yoleaux | 10:57Z <Zoffix> Tison: don't know much about it, but I'd assume 42 is an unboxed int and not an object, which is why it ain't got that method and I'd presume there's no auto-boxing in nqp, like we got in Perl 6. For example, nqp::objprimspec($y) returns 1 (for objects it's 0). You can just write nqp::isconcrete($y) instead of .defined (in nqp at least, in Perl 6 .defined is different). Or if you have to use .defined then | ||
10:58Z <Zoffix> Tison: say(nqp::objprimspec($y) || $y.defined) | |||
10:59
aindilis left
|
|||
sarna | El_Che: maybe I should learn spanish/portuguese though, now after I've moved I've been mistaken for a spaniard/portuguese a couple of times | 10:59 | |
Tison | I use nqp::isconcrete instead in the recent commit | ||
El_Che | sarna: I remember getting a lot of beers from Israeli people when I was in Brasil | 11:01 | |
11:01
[Sno] joined
|
|||
El_Che | sarna: it was their independence day and I learnt a few words | 11:01 | |
good for when you travel on low budget :) | |||
sarna | El_Che: woo! | ||
11:01
sno left
|
|||
El_Che | sarna: spent a little short of 2 years backpacking | 11:02 | |
not a lot of budget | |||
sarna | El_Che: I'm really digging the multinational community here, it's so different from poland | ||
(I've moved to denmark for uni) | |||
El_Che | I learnt some good card tricks that gets you free beer :) | ||
jmerelo | El_Che: quite an experience, I'm sure... | ||
El_Che | sarna: I can imagine | ||
jmerelo: very formative, specially for understanding Latin America (and also South-East Asia was interesting) | 11:03 | ||
jmerelo: being in a village in Latin America where no one speaks spanish is interesting (education and culture is very eurocentric on most places) | 11:04 | ||
sarna: where in .dk are you? | |||
sarna | El_Che: northern jutland | 11:05 | |
El_Che | nice | ||
you can take the boat to Sweden :) | 11:06 | ||
sarna | oslo is pretty close too :) | ||
El_Che | I have family in Århus | ||
sarna | I'm in another double A city | 11:07 | |
11:07
robertle joined
|
|||
El_Che | Ålborg? | 11:07 | |
sarna | yeah. don't write it with an Å though, the locals don't like it :D | 11:08 | |
El_Che | really? | ||
I learnt something today :) | |||
Swedish spelling or something? | |||
sarna | no, Danish. there was a spelling reform though, a lot of cities retained their old names | 11:09 | |
(in anything other than city names Aa transformed into Å) | |||
11:10
xtreak left
|
|||
El_Che | so AA is older than Å? | 11:10 | |
(linguistically I would have expected the other direction) | |||
(no always though) | |||
sarna | yeah, in old danish everything's spelled with 'aa' | 11:11 | |
11:11
wamba joined
|
|||
El_Che | dutch when from aa to a pronounce as aa on some situations | 11:11 | |
sarna | Aabenraa is my favorite city name here :D | 11:12 | |
jmerelo | El_Che: not really. pairs of letters precede letters with stuff on them ij → y, nn → ñ... | ||
El_Che | os -> ô | ||
11:15
xtreak joined,
psychoslave left
11:16
zakharyas left
11:18
[Sno] left
|
|||
sarna | m: my $apply = sub(&func, @args) {&func |@args}; say $apply(&[+], <1 2>); | 11:18 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '@args' is not declared at <tmp>:1 ------> 3my $apply = sub(&func, 7⏏5@args) {&func |@args}; say $apply(&[+], |
||
sarna | it compiled on my machine D: | 11:19 | |
hmm, it works as two separate lines | |||
m: my $apply = sub (&func, @args) {&func |@args}; say $apply(&[+], <1 2>); | 11:20 | ||
camelia | any(sub infix:<+> ($?, $?, *%) { #`(Sub+{is-pure}+{Precedence}|31100208) ... }, (1 2)) | ||
sarna | now! why isn't + applied to 1 and 2? | ||
jmerelo | sarna: [+] is actually two functions, the [ ] and the +. I'm not sure & would be a pointer to that composition. | 11:21 | |
ilmari | my $apply = sub (&func, @args) { func(|@args) }; say $apply(&[+], <1 2>); | ||
evalable6 | 3 | ||
ilmari | my $apply = sub (&func, @args) { func(|@args) }; say $apply(&[+], <1 2 3 4>); | ||
m: my $apply = sub (&func, @args) { func(|@args) }; say $apply(&[+], <1 2 3 4>); | 11:22 | ||
camelia | Too many positionals passed; expected 0 to 2 arguments but got 4 in sub at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
jmerelo | m: my $apply = sub (&func, *@args) { func(|@args) }; say $apply(&[+], <1 2 3 4>); | ||
camelia | Too many positionals passed; expected 0 to 2 arguments but got 4 in sub at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
sarna | jmerelo: don't I need to wrap infix functions in []? | ||
ilmari: thanks! | 11:23 | ||
jmerelo | sarna: yep, right. It might work. | ||
11:29
markoong joined
|
|||
Zoffix | sarna: `sub(…)` makes it think you're trying to call a routine named `sub` you need a space there. `&func` refers to `&func` as a noun, if you want to call it (i.e. use it as a verb), omit the `&`. And then parentheses are optional (unless you're using other sigils). Also, a Capture is better suited for passing arbitrary args to routines | 11:29 | |
11:30
jmerelo left
|
|||
Zoffix | m: my &apply = sub (&func, |c) { func |c }; say apply &[+], <1 2 3 4>; | 11:30 | |
camelia | 4 | ||
Zoffix | m: my \apply = sub (&func, |c) { func |c }; say apply.(&[+], <1 2 3 4>); | ||
camelia | 4 | ||
sarna | Zoffix: verbs and nouns in a programming language? :D | ||
Zoffix | sarna: its creator is a linguist by trade :) | ||
masak | m: &[+](<1 2 3 4>) | ||
camelia | ( no output ) | ||
masak | m: say &[+](<1 2 3 4>) | ||
camelia | 4 | ||
masak | guessing it takes .elems | 11:31 | |
m: say <1 2 3 4>.reduce(&[+]) | |||
camelia | 10 | ||
Zoffix | s: &[+], \(<1 2 3 4>) | ||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/587c...c.pm6#L205 | ||
timotimo | sarna: the problem with &func |@args was that it was parsed as &func | @args, which gave you a junction | ||
Zoffix | just a .Numeric | ||
masak | yes, but .Numeric on a list-y thing... :) | 11:32 | |
Zoffix | m: my \apply = sub (&func, *@a) { func |@a }; say apply.(&[+], <1 2 3 4>); | ||
camelia | Too many positionals passed; expected 0 to 2 arguments but got 4 in sub at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Zoffix | m: my \apply = sub (&func, |c) { [[&func]] |c }; say apply.(&[+], <1 2 3 4>); | 11:33 | |
camelia | 4 | ||
sarna | timotimo: ohh | ||
Zoffix | m: my \apply = sub (&func, *@a) { [[&func]] |@a }; say apply.(&[+], <1 2 3 4>); | 11:34 | |
camelia | 10 | ||
Zoffix | \o/ | ||
sarna: OK, never mind my comment about Captures. Evidently it's not the best thing in this situation :) | |||
Zoffix & | |||
11:34
Zoffix left
|
|||
sarna | also, calling apply with a dot isn't ideal | 11:35 | |
11:36
n1ge left
|
|||
timotimo | you have to put a . there because apply(...) would look for something named &apply, but what my \apply gives you is called just "apply" | 11:36 | |
any reason you don't just have "sub apply(...) {...}"? | 11:37 | ||
Ulti | whoa big speed improvement suddenly, like 10% | 11:40 | |
11:45
xtreak left
11:49
raschipi joined
11:51
xtreak joined
|
|||
sarna | timotimo: it's a hashmap, mapping strings to functions | 11:51 | |
timotimo | then you probably won't need the . | 11:52 | |
like, if your code looks like %functions{$funcname}(1, 2, 3) there doesn't have to be a . | |||
sarna | oh, good to know :) | 11:53 | |
11:56
mcmillhj joined
|
|||
sarna | is there something like `is-int` but for lists? | 11:57 | |
El_Che | whut | 11:58 | |
sarna | something like is-list | ||
El_Che | to know is something is a list? | ||
sarna | precisely | ||
11:59
Tison left
|
|||
sarna | I know I can .WHAT but how to compare it to anything? | 11:59 | |
El_Che | smartmatching? | 12:00 | |
sena_kun | m: say 3.WHAT =:= Int; | ||
camelia | True | ||
moritz | m: say 3.WHAT === Int | ||
camelia | True | ||
12:00
psychoslave joined
|
|||
raschipi | m: say 3 ~~ Int | 12:01 | |
camelia | True | ||
moritz | m: my @a = (1, 2, 3); say so all(@a) ~~ Int | ||
camelia | True | ||
moritz | m: my @a = (1, 2, 'x'); say so all(@a) ~~ Int | ||
camelia | False | ||
12:01
mcmillhj left
12:02
tobs joined,
sarna left,
sarna joined
|
|||
raschipi | m: my $y = 3 but False; say $y.WHAT =:= Int; say $y.WHAT === Int; | 12:03 | |
camelia | False False |
||
12:03
erdic left
|
|||
sarna | sorry, my internet borked :( | 12:03 | |
12:04
erdic joined
|
|||
raschipi | sena_kun: ↑ === and =:= are too strict. | 12:04 | |
12:07
sno joined
|
|||
sena_kun | raschipi, thanks, will keep it in mind. Should admit that I've never encountered usage of `but Foo` trick in the wild nor do understand why anyone would have to use it despite being involved in writing of some black-magic-like code. :) | 12:07 | |
m: my $a = 3 but False; say $a ~~ Int; | 12:08 | ||
camelia | True | ||
sena_kun | Nice. | 12:09 | |
12:09
Zoffix joined
|
|||
raschipi | It's used to send in-band extra data, expecially for DBMs. | 12:10 | |
Zoffix | AlexDaniel benjikun jmerelo are survey results public already or when is it over? I know you shared a URL, but I wanna tweet the results and it's bad science to publish survey results before it's finished. | 12:11 | |
El_Che | Zoffix: publishing raw data is weird | ||
rindolf | Zoffix: hi | 12:13 | |
Zoffix | Right, it needs to be accompanied with prose explaining the results in a way that supports your agenda :P | ||
El_Che | Zoffix: that's how the cookie crumbles :) | ||
sarna | do we have a head propagandist? | ||
rindolf | Zoffix: if rakudobrew sucks so much, then there should be a usable alternative for it | ||
raschipi | sarna: Zoffix works in marketing. | 12:14 | |
sarna | raschipi: oh :^) | ||
El_Che | rindolf: ./Configure.pl --prefix=foo && make && make test && make install | ||
Zoffix | rindolf: there is. The bash alias I gave you. It creates a single command instead of rakudobrew's two. If you don't like it, you can give rakudup.github.io/ a spin or tyil's thing whose name I forget | ||
tyil | Zoffix: LoneStar | 12:15 | |
:> | |||
Zoffix | What's the link? | ||
12:15
psychoslave left
|
|||
tyil | gitlab.com/tyil/lonestar | 12:15 | |
its also on github if you prefer that | 12:16 | ||
12:16
psychoslave joined
|
|||
tyil | it's also in the AUR and in my gentoo overlay | 12:16 | |
El_Che | I created packages as an alternative to local compiling. I am not fond of running bash scripts from the internet either | ||
12:16
thundergnat joined
|
|||
tyil | I oftentimes use the docker images as well | 12:16 | |
for testing purposes | |||
El_Che | I never use docker images I didn't create myself, besides official OS base images | 12:17 | |
tyil | I'm using the rakudo-star image with gitlab-ci | ||
saves me all the effort of setting up perl 6 manually in images all the time | |||
Zoffix | huggable: build :is: Alternatives to rakudobrew: 3rd party installers: gitlab.com/tyil/lonestar#readme and rakudup.github.io/ | 3rd party distro packages: rakudo.org/files/rakudo/third-party | Bash alias: github.com/zoffixznet/r#table-of-contents | ||
huggable | Zoffix, Added build as Alternatives to rakudobrew: 3rd party installers: gitlab.com/tyil/lonestar#readme and rakudup.github.io/ | 3rd party distro packages: rakudo.org/files/rakudo/third-party | Bash alias: github.com/zoffixznet/r#table-of-contents | ||
thundergnat | sena_kun: using but to apply a role comes in handy sometimes: See rosettacode.org/wiki/Hilbert_curve#Perl_6 for example. | ||
12:17
ExtraCrispy left
|
|||
tyil | anyway, lunchtime~ | 12:17 | |
Zoffix | sarna: I think lizmat++ is our head propagandist, being at the helm of The Perl 6 Weekly as well as at the Perl table of many confs. | 12:18 | |
12:19
mikejw joined,
thundergnat left
|
|||
lizmat | the Perl table is done by Wendy, and as such if we would need to call anybody "head propagandist", it would be her, I think | 12:20 | |
12:20
ExtraCrispy joined
|
|||
lizmat | but don't tell her that :-) | 12:20 | |
mikejw | if I want to pass a binary file as string to github.com/bduggan/aws-s3-perl6 do I need to open and slurp the conents with raw/bin encoding? | ||
sarna | if you told her she'd point at another person :^) | ||
mikejw | *contents | ||
jkramer | I was looking at the tasks at rosettacode that don't have a p6 implementation yet and started working on this one: rosettacode.org/wiki/Checkpoint_synchronization | 12:21 | |
Do you think this is an adequate solution or is there anything to be improved? gist.github.com/jkramer/7e04b7c93a...3651e70de6 | |||
Zoffix | mikejw: doing that would pass it as a Blob. I think you want `"file".IO.slurp: :enc<latin1>` or `:enc<utf8-c8>`. The latter tries to decode it as utf8 and keeps any invalid bytes as is, the former just keeps all the bytes as is | 12:22 | |
lizmat | await (1..$total-workers).map: -> $id { and lose the my $id = $_ ? | ||
jkramer: ^^ | |||
El_Che | lizmat: I think Zoffix, Wendy and you all cover different parts of the propaganda | ||
rindolf | tyil: must lonestar be installed under /usr ? | 12:23 | |
mikejw | ah cool, thanks :) | ||
Zoffix | jkramer: FWIW there's Supply.throttle that does all the throttling for you | 12:24 | |
12:26
sarna left
|
|||
Zoffix | m: my $workers = 4; my $units-to-build = 42; await ^$units-to-build .Supply.throttle: $workers, { say "Doing work on $^u"; sleep 3.rand; say "$^u is done" } | 12:26 | |
camelia | Doing work on 0 Doing work on 1 Doing work on 2 Doing work on 3 3 is done Doing work on 4 1 is done Doing work on 5 2 is done Doing work on 6 6 is done Doing work on 7 4 is done Doing work on 8 0 is done Doing work on 9… |
||
AlexDaniel | .seen benjikun | 12:27 | |
yoleaux | I saw benjikun 08:05Z in #perl6: <benjikun> np :) | ||
raschipi | Perl 6 marketing is a hot potato | ||
Zoffix | m: my $workers = 4; my $units-to-build = 12; react whenever ^$units-to-build .Supply.throttle: $workers, { say "Doing work on $^u"; sleep my \ans := 3.rand; [$u, ans] } { say .result.head ~ " is done. Result is " ~ .result.tail } | ||
camelia | Doing work on 0 Doing work on 1 Doing work on 2 Doing work on 3 2 is done. Result is 0.08417798391732845 Doing work on 4 4 is done. Result is 0.35950064073938093 Doing work on 5 0 is done. Result is 0.5759448195478509 Doing work on 6… |
||
AlexDaniel | Zoffix: yeah, but I think it's not over yet | 12:28 | |
12:28
psychoslave left
|
|||
AlexDaniel | (re survey) | 12:28 | |
ah, it says that it *is* over… | 12:29 | ||
12:29
psychoslave joined,
parv left
|
|||
Zoffix | jkramer: ok, nm, I just now read that wiki that describes the problem | 12:29 | |
And another suggestion for the survey is a friendlier URL :) | 12:30 | ||
Not only I don't remember what it was, even if I saw it right now, I wouldn't know if it's the same or not. | |||
perl6.org/survey/2018.06 now that's a URL and you can publish the results right at the same URL once it's over | |||
jkramer | lizmat: Ah yeah, don't know why I did it that way :) | 12:32 | |
rindolf | Zoffix: please add a licence to github.com/zoffixznet/rd#linux | 12:33 | |
Zoffix | meh | 12:34 | |
jkramer | Zoffix: That's pretty cool but I think it's not what they want there :) | ||
Zoffix | jkramer: yeah, it isn't :) | ||
12:36
zakharyas joined
|
|||
rindolf | Zoffix: i cannot find anything better than rakudobrew and i looked at all three alternatives | 12:36 | |
Zoffix | rindolf: which feature of rakudobrew are those alternatives missing? | 12:38 | |
rindolf | Zoffix: well, lonestar has to be installed under /usr | ||
mikejw | Zoffix: now things seem to freeze when I try and access the slurped contents | 12:39 | |
btw it's a zip file | |||
Zoffix | mikejw: is it a super huge file? | ||
mikejw | 23megs I think | ||
rindolf | Zoffix: and rakudoup requires an ugly curl | bash command | 12:40 | |
Zoffix: and your alias clutters the home dir | |||
Zoffix | rindolf: but... rakudobrew does the same. It installs into .rakudobrew, my alias installs into .rakudo | 12:41 | |
rindolf | Zoffix: it also has ~/rakudo | ||
Zoffix | rindolf: and rakudobrew is an ugly command that you clone from git rather than curl|bash command | ||
tyil | tbh, all solutions are ugly | ||
Zoffix | rindolf: that's what I meant. You can change it to any dir you want. Just adjust the path | ||
tyil | the only good solution would be inclusion in the distro repos | ||
all we're doing now are workarounds | 12:42 | ||
none of them are particularly "nice" | |||
rindolf | Zoffix: ok, fine | ||
tyil | also rindolf, if I didnt break it yet, lonestar doesn't need to be installed at all | 12:43 | |
rindolf | tyil: ok | ||
tyil | just clone and ./bin/lonestar, it will intall in ~/.rakudo-star by default | ||
12:46
domidumont joined
12:48
curan left
|
|||
Zoffix | mikejw: well, I've just killed my box by trying to .slurp.say a 23MB sparse file :P | 12:48 | |
12:49
mcmillhj joined,
robertle left
|
|||
rindolf | tyil: thanks | 12:49 | |
tyil | no probs :> | 12:50 | |
rindolf | Zoffix: heh | ||
Zoffix | Oh, it's 23*GB*... I guess `dd`'s seek takes kilobytes not bytes... | 12:51 | |
rindolf | Zoffix: ah | ||
Zoffix | oh, "seek=N skip N obs-sized blocks at start of output" | 12:52 | |
12:52
robertle joined
|
|||
timotimo | :D :D | 12:52 | |
Zoffix | and default obs is 512 | ||
timotimo | yeah, 23 gig may not fit into the ram with rakudo's overhead | 12:53 | |
12:53
robertle left
|
|||
Zoffix | Challenge accepted!! :) | 12:53 | |
timotimo | i don't have enough ram to get that to fit %) | ||
if it's all zeroes, zram might help here | |||
Zoffix | Well, I'm too lazy for it, but I think GCE has a VM with half a terrabyte | ||
timotimo | having loads and loads of objects on the heap in moarvm is problematic because the GC walks all of them, but if you read a gigantic file into memory, you just have a buffer that won't get walked through regularly | 12:55 | |
12:55
molaf joined
|
|||
jnthn | The GC only walks all of them in a full collection :) | 13:00 | |
Zoffix | mikejw: what version of perl6 do you have? | ||
$ perl6 -e '$*SPEC.devnull.&open(:w).spurt: "z.zip".IO.slurp: :enc<latin1>; say "z.zip".IO.s/1024/1024, " ", now - ENTER now' | 13:01 | ||
26.0959663 1.5011168 | |||
13:01
Khisanth left
|
|||
Zoffix | mikejw: ^ that's on 2018.03. 26MB zip file takes 1.5s. And printing to STDOUT takes ~5s | 13:01 | |
On 2018.05-54-g148d7c5 on a different box takes ~1.6s | |||
(to /dev/null) | 13:02 | ||
And utf8-c8 to devnull takes ~7.6s | |||
So I wonder if maybe your perl6 is super ancient that it appears to freeze up on this operation | 13:03 | ||
13:09
xtreak left
13:10
Zoffix left
|
|||
rindolf | tyil: with lonestar, the perl6 bench looks better | 13:13 | |
only 87 secs | |||
tyil | it shouldnt differ from any other form of self compiled installation | 13:14 | |
tyil shrugs | |||
I'm glad it works for you though :p | |||
rindolf | tyil: i had an old one | ||
13:14
Khisanth joined
13:16
Zoffix joined
|
|||
Zoffix | rindolf: what's your perl6 -v? | 13:16 | |
mikejw | Zoffix: "This is Rakudo version 2018.04 built on MoarVM version 2018.04" | 13:17 | |
Zoffix | mikejw: hm, no idea then :/ | ||
mikejw | no worries | ||
Zoffix | rindolf: because lonestar installs latest Star, which would be 2018.04, so it's surprising it's faster (unless your earlier install was even older than that). | 13:18 | |
rindolf | Zoffix: This is Rakudo Star version 2018.04.1 built on MoarVM version 2018.04.1 | ||
Zoffix: it may have been | |||
Zoffix | hm, OK. | ||
rindolf | Zoffix: bye . walk | 13:19 | |
13:19
rindolf left
|
|||
Zoffix | c: 2018.04.1 temp.perl6.party/z.txt | 13:20 | |
committable6 | Zoffix, Successfully fetched the code from the provided URL | ||
Zoffix, ¦2018.04.1: «1.1276149» | |||
Zoffix | c: HEAD temp.perl6.party/z.txt | ||
committable6 | Zoffix, Successfully fetched the code from the provided URL | ||
Zoffix, ¦HEAD(ea16138): «0.80886579» | |||
Zoffix | :) | ||
mikejw | it seems like I need to use enc:<latin1> on the open function and on slurp other wise I get a "Malformed UTF-8" error | 13:21 | |
Zoffix | mikejw: oh yeah, sorry. If you're using a file handle instead of IO::Path, the :enc goes into open modes, not into .slurp | ||
m: say 1.1276149/0.80886579 | 13:22 | ||
camelia | 1.394069219 | ||
Zoffix | .tell rindolf looks like when the next Star comes out in about a month, you should see another ~39% speed boost: colabti.org/irclogger/irclogger_log...06-29#l607 | ||
yoleaux | Zoffix: I'll pass your message to rindolf. | ||
mikejw | ok makes sense. still getting the hanging.. probably something I'm not doing right with promises again | 13:23 | |
13:25
Zoffix left
|
|||
mikejw | ok it's because I was trying to output the file contents through Data::Dump. probably not a great idea :D | 13:36 | |
13:36
domidumont left
13:42
MilkmanDan left
|
|||
mikejw | I guess this aws library isn't built for handling large-ish file because I think it must be doing something simliar. get the same max cpu hang when trying to pass it the file for uplading | 13:44 | |
13:44
scimon joined
|
|||
mikejw | *similar *uploading | 13:44 | |
13:46
MilkmanDan joined
13:52
Tison joined
13:54
zakharyas left
|
|||
SmokeMachine | m: say set() =:= set(); say set(1) =:= set(1) | 13:58 | |
camelia | True False |
||
SmokeMachine | if `set()` always return the same object, wouldnt make sense that `set()` passing immutable values to return the same object too? | 14:00 | |
raschipi | SmokeMachine: Yes it does. | ||
m: say "1" =:= "1" | 14:01 | ||
camelia | True | ||
raschipi | Same as the above. | ||
jnthn | It'd be a possible constant folding opt, yes | ||
14:01
rindolf joined
|
|||
raschipi | m: say 1 =:= 1 | 14:02 | |
camelia | True | ||
14:04
psychoslave left
|
|||
SmokeMachine | how could it be done? making a cache of immutable objects? | 14:04 | |
raschipi | It's caller 'interning'. | 14:05 | |
called* | |||
jnthn | SmokeMachine: It's a compiler optimization. We already do it for 1 + 1 for examle. | 14:06 | |
14:06
domidumont joined
|
|||
jnthn | We shouldn't do such a thing at runtime, the memory use can get really out of hand :) | 14:06 | |
raschipi | m: say 1 + 1 =:= 2 | ||
camelia | True | ||
SmokeMachine | jnthn: should it be done on github.com/rakudo/rakudo/blob/mast...imizer.nqp ? | 14:07 | |
14:07
kaare_ left
|
|||
jnthn | SmokeMachine: Yes, though in theory marking `set` with `is PURE` in CORE.setting would opt it in to constant folding | 14:08 | |
14:09
zakharyas joined
|
|||
SmokeMachine | jnthn: make it `PURE` wouldnt make it return the same object even with mutable parameters? or `PURE` looks for the `.WHERE`? | 14:13 | |
jnthn: sorry, even if it looks for the `.WHERE`... | |||
timotimo | pure really just signals to the optimizer that it can evaluate it at compile time and replace the call with the result | 14:14 | |
all it cares about is that the values you call it with are compile-time-known or not | |||
jnthn | SmokeMachine: It will only apply if all the arguments to it are fixed at compile time | ||
ah, timotimo beat me to it :) | |||
SmokeMachine | :) | 14:15 | |
lizmat | fwiw: multi sub set() { BEGIN nqp::create(Set) } | ||
so the way I see it, set() is already interned by being a WVal ? | 14:16 | ||
14:16
Zoffix joined
|
|||
jnthn | lizmat: Yes, but we're talking about set(1,2,3) | 14:16 | |
SmokeMachine | it should be true to `set()`, `bag()` and `mix()` right? | ||
lizmat | ah, that! | ||
will add "is pure" and see if that makes a difference for static sets | 14:17 | ||
Zoffix | SmokeMachine: are you gonna be working on static optimizing those subs? | ||
lizmat | m: dd Set.new | ||
camelia | ().Set | ||
SmokeMachine | Id like to try... | ||
lizmat | m: dd ().Set | ||
camelia | set() | ||
lizmat | working on fixing that ^^^ | ||
Zoffix | lizmat: `is pure` has to be on the proto for it to take effect and I guess the candidates that take args aren't pure? | ||
SmokeMachine | Zoffix: Ill try it at night... | 14:18 | |
lizmat | doesn't "is pure" means to always create the same .WHICH for a given set of parameters ? | ||
timotimo | not necessarily | ||
jnthn | I thought it really meant "you can constant fold this", e.g. if the arguments are themselves constant or the result of a constant folding | 14:19 | |
lizmat | yeah, so in that sense set() bag() and mix() can be marked "is pure" | 14:20 | |
Zoffix | SmokeMachine: OK :) I started something, but it's not that good. Here's the diff if there's anything you want to salvage: gist.github.com/zoffixznet/f5db2e3...30fb5bd680 As jnthn++ said, we can actually try to constant-fold even versions with the args and that's done for other stuff in this branch, so you'll be trying to use some of that code or stick the conditional for sets into that | 14:21 | |
branch: github.com/rakudo/rakudo/blob/mast...1589-L1694 | |||
Ah | |||
SmokeMachine: ok, nm, looks like we can just mark those subs as pure :D | |||
raschipi | Am I the only one that likes the indirect invocation syntax? | 14:22 | |
Zoffix | I like it, but it sucks for nesting | ||
Would be nice to write: say perl Foo.new: <a b c> : | |||
or say perl Foo.new: <a b c> : : to also call `.say` instead of `&say` | |||
hobbs | it should mean that the result is only dependent on the parameters and nothing else. It doesn't *have* to memoize or anything like that, but it wouldn't be wrong for it to :) | ||
Zoffix | Ah right, that's indeed what it means :) | 14:23 | |
14:23
squashable6 joined
|
|||
Zoffix | wonder if there's more that can be marked | 14:24 | |
SmokeMachine | Zoffix: Yes... the `PURE` will make it easier... | ||
Zoffix is reminded of R#1566 | 14:25 | ||
synopsebot | R#1566 [open]: github.com/rakudo/rakudo/issues/1566 [regression] multi built-ins are not assignable to Callable | ||
Zoffix | jnthn: reminder that you wanted to see if a good solution exists for github.com/rakudo/rakudo/issues/1566 :) | 14:26 | |
SmokeMachine | Zoffix: but if you want to finish it, thats ok... I can try to study something else... (I was thinking of trying making the return type check compile time) | ||
Zoffix | (something that's less hackish than github.com/rakudo/rakudo/issues/15...-370995418 ) | ||
SmokeMachine: nah, you finish it :) | |||
14:27
zakharyas left
|
|||
jnthn | Zoffix: ah, thanks, maybe next week when I'm feeling for brainy :) | 14:29 | |
Zoffix | :) | ||
14:31
Zoffix left
14:32
ExtraCrispy left
|
|||
jnthn | *more :) | 14:32 | |
heh, can't even type | |||
timotimo | cool, they let you pick up your fixed brain on the weekend? ;) | 14:33 | |
14:34
ExtraCrispy joined
14:35
raschipi left
14:36
Zoffix joined
|
|||
Zoffix | SmokeMachine: to clarify: ignore my diff. It's wrong. You can just apply `is pure` trait on the set/bag/mix ops | 14:36 | |
hobbs | Zoffix: or any other kind of eliminating multiple evaluation, so an optimizer could decide to hoist a pure call out of a loop or do CSE or that kind of fanciness :) | 14:37 | |
(to continue previous thought) | |||
14:38
zakharyas joined
|
|||
Altreus | wha gwannin with bailador? It's not been updated for 2 months :s | 14:38 | |
Zoffix | :) | ||
Altreus | does it work | ||
Zoffix | Altreus: probably. I guess Cro stole its thunder in some way. | ||
El_Che | Zoffix: I don't think it's true | ||
Zoffix: it didn't look too active before Cro appeared | 14:39 | ||
Zoffix | What happened to the Bailador book BTW? | ||
14:40
turdmonkey joined,
turdmonkey is now known as Bowlslaw
|
|||
Bowlslaw | Helllooo | 14:40 | |
Altreus | Cro is it | ||
SmokeMachine | Zoffix: ok, thanks! | ||
Altreus loosk | |||
hobbs | shot down by Enrique Iglesias's legal team | ||
Zoffix | Altreus: it got a website: mi.cro.services | 14:41 | |
Altreus | lols | ||
found it already :) | |||
Zoffix | :) | ||
Then I have a second question: what happened to people who kicked money for Bailador book? Is that money lost? | 14:42 | ||
m: { for ^700_000 { my $ = set(1, 2, 3, 4) }; say now - ENTER now } | 14:43 | ||
camelia | 5.07368704 | ||
Zoffix | m: BEGIN &set.^mixin: role { method is-pure { True } }; { for ^700_000 { my $ = set(1, 2, 3, 4) }; say now - ENTER now } | ||
camelia | 0.057662 | ||
Zoffix | is-pure is OP :P | ||
14:49
fake_space_whale joined
14:51
natrys joined
|
|||
Zoffix | Filed R#1992 | 14:52 | |
synopsebot | R#1992 [open]: github.com/rakudo/rakudo/issues/1992 [perf] Examine codebase for subs that can be `is pure`d | ||
Zoffix | m: say .?is-pure for &list, &hash, &slip, &so, &substr | ||
camelia | Nil Nil Nil Nil Nil |
||
Zoffix | 'cause all this stuff can be pure, eh? | ||
lizmat | Zoffix: am testing set/bag/mix atm | ||
timotimo | i have a cautionary tale for you | 14:53 | |
we made x "is pure" at some point, and that caused performance to drastically worsen for very long resulting strings | |||
Zoffix | lizmat: ok, let SmokeMachine know :) I think they were working on that too | ||
timotimo: because it flattened the ropes? | 14:54 | ||
timotimo | because the object it was creating had been serialized before the execution started, so we ende up turning the string that was "this short thing repeated 1000 times" in memory (i.e. implemented with a strand) into actually many kilobytes (or megabytes in this case) of string data | ||
yes | |||
lizmat | SmokeMachine: are you still looking at adding "is pure" to set/bag/max ? | ||
timotimo | so make sure handling the constant object isn't more costly than evaluating it on the spot | ||
SmokeMachine | I was planning to do that at night... | 14:55 | |
lizmat: ^^ | |||
lizmat | ok, I'm about to commit that change myself | ||
SmokeMachine | lizmat: ok! | ||
14:56
domidumont left
|
|||
lizmat | it makes set(1,2,3) 65x faster if you do it 100000 times | 14:57 | |
Zoffix | nice :) | ||
timotimo | it'll be even more faster if you do it 10000000000 times :P | ||
14:57
skids joined
|
|||
SmokeMachine | \o/ | 14:57 | |
timotimo | hm, or maybe not | ||
Zoffix | Yeah | ||
lizmat | yeah, from O1 I guess now | 14:58 | |
Zoffix | "Changelog: made set() 1000000000000x faster" :) | ||
14:58
wamba left
|
|||
lizmat | .oO( ∞ x faster ) |
14:59 | |
Zoffix | :) | ||
Bowlslaw | regarding the web crawler: do you think it is good design to store the links in an array, and then pass the array to a function that processes them? | 15:00 | |
15:00
Zoffix left
15:04
erdic left,
reu joined,
erdic_ joined,
erdic_ is now known as erdic
|
|||
rindolf | i added a new benchmark - github.com/shlomif/perl6-benchmark...66fe33f5f4 | 15:07 | |
yoleaux | 13:22Z <Zoffix> rindolf: looks like when the next Star comes out in about a month, you should see another ~39% speed boost: colabti.org/irclogger/irclogger_log...06-29#l607 | ||
sena_kun | Bowlslaw, my only tip to writing crawlers is to keep sure you have a fixed-size(or at least sane number of) batch of workers. | 15:08 | |
Bowlslaw | yes | ||
sena_kun | And never try to parse HTML with regexps. :) | 15:09 | |
El_Che | rindolf++ | 15:10 | |
rindolf | El_Che: thanks | ||
15:11
scimon left
|
|||
Bowlslaw | hm, I just discovered XML::Parser... | 15:11 | |
looks better than DOM::Tiny for this job | |||
sena_kun | I used Gumbo, maybe somewhat long ago. | 15:12 | |
Not sure if better than XML::Parser though. | 15:13 | ||
jnthn | fwiw, gist.github.com/jnthn/b358ebfb6ea6...b9f62ba92b is my total hack of a crawler, and yes, it does both things sena_kun mentioned wrong :) | 15:15 | |
15:15
jmerelo joined
|
|||
sena_kun | : ) | 15:16 | |
jnthn | It does, however, do concurrent requsets right, and URL concat right, and is a nice example of using a react block to keep an async operation alive so long as there is work to be done. :) | ||
El_Che | jnthn: never meet your heroes, they say ;) | ||
Bowlslaw | Cro ? | ||
El_Che | Bowlslaw: you pronounce it by saying it repeatedly and dancing like a chicken | 15:17 | |
Bowlslaw: cro.services/ | |||
jnthn | Bowlslaw: Docs at cro.services/docs/reference/cro-http-client and cro.services/docs/reference/cro-uri for the bits of Cro the example uses | 15:18 | |
Bowlslaw | lol | ||
cool, thanks | |||
i dont' want to copy anyone's crawler though | |||
El_Che | Something jnthn does when he's not hacking on rakudo or on comma :) | ||
jnthn | El_Che: I thought that was MoarVM :P | ||
El_Che | jnthn: let's keep the internals contained | 15:19 | |
:) | |||
jnthn | Bowlslaw: Sure, wasn't giving you it to copy so much as to point out its overall design, which may be interesting :) | ||
Bowlslaw | I just got banned from r/perl on reddit because a politically motivated mod hates me... | 15:20 | |
perhaps here isn't the right place to state that. i'll deal with it | |||
anyway, thanks jnthn | |||
rindolf | .tell Zoffix thanks! Note that www.reddit.com/r/programming/comme..._think_it/ | ||
yoleaux | rindolf: I'll pass your message to Zoffix. | ||
jnthn | I guess if Cro::HTTP::Client had a "maximum outstanding requests allowed per client" option then my example *would* do throttling with a tiny change. :) | 15:21 | |
AlexDaniel | rindolf: this actually bothered me a lot :) | 15:22 | |
randomascii++ | |||
15:22
domidumont joined
|
|||
jnthn | The regex would still be a bit naughty though :) | 15:23 | |
AlexDaniel | rindolf: so TL;DR newspeed ÷ oldspeed and “5.5x as fast”, right? | 15:26 | |
15:26
diakopter joined
|
|||
Bowlslaw | yess | 15:27 | |
jnthn: i've been having trouble with concurrency | 15:28 | ||
that really helps clarify it | |||
15:29
Sgeo__ joined,
mikejw left
|
|||
rindolf | AlexDaniel: yes | 15:30 | |
15:31
Sgeo_ left
|
|||
diakopter | has anyone tried compiling MoarVM to wasm? | 15:35 | |
15:36
zakharyas left
15:39
b2gills joined
15:40
ChoHag joined
|
|||
Geth | doc: db0f520a2d | (JJ Merelo)++ | doc/Language/objects.pod6 Changes slightly the object invocation example To introduce in a natural way the indirect invocant syntax, closing #2131. As usual, please reopen and/or edit subject if it is not addressed satisfactorily. |
15:43 | |
synopsebot | Link: doc.perl6.org/language/objects | ||
jmerelo | diakopter: no one, AFAIK, but it would be cool if someone tried... | 15:44 | |
15:44
domidumont left
15:49
Zoffix joined
|
|||
Zoffix | rindolf: err.... yes, 90% faster means different than .9x faster, but 3.9x faster means 390% faster | 15:50 | |
yoleaux | 15:20Z <rindolf> Zoffix: thanks! Note that www.reddit.com/r/programming/comme..._think_it/ | ||
Zoffix | AlexDaniel: the *times* in "2 times faster" refers to multiplication operator, also called "times". Thus, it's 200% faster, i.e. the ratio is 2:1, not 3:1 | 15:51 | |
jkramer | Zoffix: Isn't "2 times faster" = "the original speed plus 2 times the original speed"? | 15:52 | |
For 200% of the original speed I'd say "twice as fast" | |||
moritz | natural language sucks, let's just all speak Perl 6, ja? | ||
AlexDaniel | moritz: True | ||
Zoffix | No, 2 times faster means 2 x original speed | ||
rindolf | Zoffix: actually 2:1 is 100% faster | ||
Zoffix | Where are you getting the "plus" there? | ||
rindolf: right, but it's also 2x faster | 15:53 | ||
rindolf | Zoffix: yes | ||
AlexDaniel | fast*er* | ||
jkramer | The fastER is a plus for me. :) | ||
Zoffix | rindolf: so then why did you "note that" to me? My commit message read 3.9x faster, didn' tit? | ||
jkramer | Something is X something'ER than Y than it's Y + X | 15:54 | |
Zoffix | xkcd.com/309/ | ||
rindolf: oh, you were talking about the 39%, not the commit message. Never mind | 15:55 | ||
rindolf | Zoffix: <Zoffix> rindolf: looks like when the next Star comes out in about a month, you should see another ~39% speed boost: colabti.org/irclogger/irclogger_log...06-29#l607 | ||
Zoffix: yes | |||
jmerelo | What was the bot that said when some new feature was working? I need it for this github.com/perl6/doc/issues/2132 | 15:56 | |
Zoffix | jmerelo: bisect: | ||
rindolf: what does 39% speed boost mean? | |||
AlexDaniel | jmerelo: actually try 6c: … first | 15:57 | |
Zoffix | rindolf: to me it means original speed + 39% of original speed; is that what old-time / new-time give? | ||
m: 1.1276149/0.80886579 | |||
camelia | WARNINGS for <tmp>: Useless use of "/" in expression "1.1276149/0.80886579" in sink context (line 1) |
||
Zoffix | m: say 1.1276149/0.80886579 | ||
camelia | 1.394069219 | ||
jmerelo | 6c: use NativeCall; my $number_of_ints = 10; my $ints = CArray[int32].allocate($number_of_ints); | ||
committable6 | jmerelo, gist.github.com/31d1e3b6933e9fd9bb...9c0a5baa38 | 15:58 | |
Zoffix | Like, I'd describe it as 39% faster. | ||
15:58
diakopter left
|
|||
Zoffix | m: say 1.1276149/0.080886579 | 15:58 | |
camelia | 13.940692188 | ||
Zoffix | I'd describe that as 13.9x faster... | ||
Is that right? | |||
AlexDaniel | Zoffix: 13.9x as fast | 15:59 | |
rindolf | Zoffix: github.com/shlomif/shlomif-compute...nt-percent | 16:00 | |
Zoffix | AlexDaniel: for both? | ||
AlexDaniel | Zoffix: 1.39x as fast, 13.9x as fast | 16:01 | |
16:01
eaterof joined
|
|||
Zoffix | AlexDaniel: how would you write "twice faster" in ${n}x notation? | 16:02 | |
16:02
reu left
|
|||
AlexDaniel | Zoffix: 3x as fast, I think? Depending on what you mean by twice faster | 16:03 | |
16:03
bwisti joined,
reu joined,
SHODAN joined
|
|||
Zoffix | AlexDaniel: "two times faster" | 16:03 | |
16:04
Altreus_ joined
|
|||
Zoffix | how do you get 3x—which is pronounced as "three times"—from "two times"? | 16:04 | |
rindolf: I don't understand what that is or how to run it | 16:06 | ||
rindolf: that formula is for the time, while the "faster" is the speed. | |||
hobbs | Zoffix: 50% faster is 1.5 times as fast. 2 times faster is 3 times as fast. | ||
AlexDaniel | well, if there's no speedup or slowdown, it's 0 times faster, right? And that's also 1x as fast? | ||
16:07
breinbaas joined
|
|||
rindolf | Zoffix: yes | 16:07 | |
Zoffix | OK, I get it now | ||
AlexDaniel | Zoffix: but generally, the point I personally want to make is that our changelog and commit messages are confusing. It's not so much about who's right and who's wrong, but that the numbers are somewhat meaningless and inconsistent | 16:08 | |
jmerelo | Geth: status | ||
AlexDaniel | releasable6: status | ||
releasable6 | AlexDaniel, Next release in ≈22 days and ≈2 hours. 1 blocker. 0 out of 41 commits logged | ||
AlexDaniel, Details: gist.github.com/713c521c146db66bdb...b1fec2a9a5 | |||
rindolf | Zoffix: shlomif@telaviv1:~$ improvement-percent from 1.1276149 to 0.8088657939.4069218825536% | ||
Zoffix | AlexDaniel: make a bot that takes old run time and new run time and gives the right wording for speed | 16:09 | |
rindolf | Zoffix: shlomif@telaviv1:~$ improvement-percent from 1.1276149 to 0.80886579 => 39.4069218825536% | ||
AlexDaniel | Zoffix: alright | ||
AlexDaniel does that | |||
Zoffix | \o/ | ||
16:09
skids left,
thowe left
|
|||
AlexDaniel | I was about to suggest creating a tool, but got ninja'd | 16:09 | |
Geth | doc: bfd3f57503 | (JJ Merelo)++ | doc/Language/nativecall.pod6 Clarifies when allocate was introduced closes #2132 |
||
16:09
eaterof is now known as eater
|
|||
synopsebot | Link: doc.perl6.org/language/nativecall | 16:09 | |
Zoffix | AlexDaniel: hm, maybe a tool would be better even? Somewhere in rakudo's tools/ ? | 16:10 | |
That way one can run it without being on IRC when making a commit | |||
AlexDaniel | let's start with that, yeah | ||
can wrap a bot around it later | |||
16:11
domidumont joined
|
|||
Zoffix | I think it's a language barrier thing :) both "twice faster" and "twice as fast" translate the same in Russian :) | 16:12 | |
16:12
squashable6 left
|
|||
Zoffix | ... and in French. | 16:13 | |
16:14
skids joined,
thowe joined,
labster joined,
AlexDaniel`` joined,
undersightable6 joined,
Matthew[m] joined,
mempko joined,
kornbluth.freenode.net sets mode: +v undersightable6
|
|||
Zoffix | Makes me think I'm being trolled :P | 16:14 | |
lizmat | Zoffix: as in Dutch, fwiw | ||
jmerelo | Zoffix: dvi davai | ||
moritz | both exist in German | 16:15 | |
lizmat | moritz: but with the same meaning, or different meaning? | ||
moritz | "doppelt so schnell" == twice as fast, "zweimal schneller" == "two times faster" | 16:17 | |
hobbs | Zoffix: for what it's worth, I generally try to use "<decimal> times as fast", without using percent, and without using "x times faster", to be as clear as possible. | ||
moritz | with the same possible interpretations and ambiguities as in English | ||
16:17
benchable6 left
|
|||
hobbs | but for a small change I'll still probably say a 10% speedup or whatever | 16:17 | |
to mean 1.1x as fast | |||
16:17
lance_w[m] left,
Matthew[m] left,
AlexDaniel`` left
16:18
sno left,
mienaikage left,
ilmari[m] left
|
|||
AlexDaniel | what's up with freenode again… | 16:18 | |
16:18
jmerelo left
|
|||
hobbs | le network is le split | 16:18 | |
16:19
sftp joined
|
|||
Zoffix | hobbs: and do you compute the number as `old-time / new-time` ? | 16:19 | |
AlexDaniel | alright, don't worry everyone, I have the tool coming… :) | 16:21 | |
SmokeMachine | m: say set(1) =:= set(1) | ||
camelia | False | ||
Zoffix | :) | ||
hobbs | Zoffix: yes, that works | ||
Zoffix | SmokeMachine: that now constant-folds, but the object would still be different (unless it's set(), without args). Basically it now calls that routine at compile time instead of runtime | 16:22 | |
And it's the same object for set() because there's a special candidate for it that makes one object at begin time | |||
timotimo | don't we still clone the object on the way out? | ||
Zoffix | m: dd set() =:= set() | 16:23 | |
camelia | Bool::True | ||
Zoffix | nope | ||
timotimo | oh, also, every call to set() will be compile-time-evaluated separately, there is no cache or something | ||
16:23
kalkin--- left
|
|||
timotimo | so set(1) =:= set(1) won't be true | 16:23 | |
Zoffix | right | ||
m: multi foo { BEGIN rand }; multi foo(|) { rand }; [foo(), foo(), foo(), foo(42), foo(42), foo(42)] | 16:24 | ||
camelia | ( no output ) | ||
Zoffix | m: multi foo { BEGIN rand }; multi foo(|) { rand }; say [foo(), foo(), foo(), foo(42), foo(42), foo(42)] | ||
camelia | [0.4724516930069058 0.4724516930069058 0.4724516930069058 0.4151627299452856 0.9904360721265346 0.4774319163671893] | ||
buggable | New CPAN upload: Amazon-DynamoDB-0.1.tar.gz by HANENKAMP modules.perl6.org/dist/Amazon::Dyna...:HANENKAMP | ||
SmokeMachine | yes, but its only called once and the original calls are changed to the response of that single call (isnt it what constant fold means?) so, it shoud "return" the same object every time, shouldnt? | ||
Zoffix | m: multi foo { BEGIN rand }; multi foo(|) { rand }; say [(BEGIN foo), (BEGIN foo), (BEGIN foo), (BEGIN foo 42), (BEGIN foo 42), (BEGIN foo 42)] | 16:25 | |
camelia | [0.6006040438087445 0.6006040438087445 0.6006040438087445 0.21298813403474615 0.8253930471542793 0.7956978070765766] | ||
hobbs | speed is 1/time, so if the time multiplier is new-time/old-time, the speed multiplier is new-time/old-time :) | 16:26 | |
argh | |||
speed is 1/time, so if the time multiplier is new-time/old-time, the speed multiplier is old-time/new-time :) | |||
Zoffix | SmokeMachine: ^ this is what's it like now. The `is pure` thing just added those `BEGIN`s in `(BEGIN foo)`. But if you look at the candidates, only the argless one has *another* BEGIN, which makes that candidate always return the same thing, while the other candidates return a new one | ||
hobbs | ignore the screwup | ||
SmokeMachine | m: sub foo is pure {rand}; say foo, foo, foo | ||
camelia | 0.55048195659059060.37231769571267890.8481266995271738 | ||
AlexDaniel | hobbs: right | 16:27 | |
SmokeMachine | m: sub foo is pure {say "here"; 42}; say foo, foo, foo | ||
camelia | here here here 424242 |
||
Zoffix | m: sub foo is pure {say "here"; 42}; for ^3 { say foo } | 16:28 | |
camelia | here 42 42 42 |
||
Zoffix | m: sub foo {say "here"; 42}; for ^3 { say foo } | ||
camelia | here 42 here 42 here 42 |
||
Zoffix | SmokeMachine: ^ that's what `is pure` did. It called it once at compile time and the returned value was then used 3 times at runtime. Without pure, at runtime you're genning the value each time | ||
Bowlslaw | ok, Cro is really cool | 16:29 | |
Zoffix | m: sub foo is pure {BEGIN say "here"; 42}; say foo, foo, foo | ||
camelia | here 424242 |
||
Zoffix | SmokeMachine: ^ and this is what that `BEGIN` in argless `set()` candidate does. So it results in there being just one object for all argless `set()` calls | 16:30 | |
16:30
bwisti left
|
|||
SmokeMachine | m: sub foo is pure {say "here"; 42}; my $last; for ^3 { my $a = foo; say $a =:= $last; $last = $a } | 16:30 | |
camelia | here False False False |
||
16:30
rouking left,
fake_space_whale left
|
|||
Zoffix | That's not a good test, because 42 is interned and also `=:=` cares about container, but you're storing it in a different container in your code | 16:31 | |
SmokeMachine | m: sub foo is pure {say "here"; 42}; my $last; for ^3 { my $a = foo; say $a<> =:= $last<>; $last = $a } | 16:32 | |
camelia | here False True True |
||
SmokeMachine | Zoffix: I didnt get it... | ||
m: sub foo is pure {say "here"; class :: {}.new}; my $last; for ^3 { my $a = foo; say $a<> =:= $last<>; $last = $a } | |||
camelia | here False True True |
||
SmokeMachine | Zoffix: if it runs only once, it will always "return" the same object... (in my head) | 16:34 | |
Zoffix | SmokeMachine: that's why you get `True True` there | ||
SmokeMachine: and in there, it *is* the same object. | |||
SmokeMachine | m: sub foo(|) is pure {say "here"; class :: {}.new}; my $last; for ^3 { my $a = foo 1; say $a<> =:= $last<>; $last = $a } | 16:35 | |
camelia | here False True True |
||
SmokeMachine | Zoffix: yes, but why isnt `set(1)` doing the same? | ||
Zoffix | SmokeMachine: yes | ||
SmokeMachine | m: set(1) =:= set(1) | 16:36 | |
camelia | WARNINGS for <tmp>: Useless use of "=:=" in expression "set(1) =:= set(1)" in sink context (line 1) |
||
Zoffix | m: my $last; for ^3 { my $a = set 1; say $a<> =:= $last<>; $last = $a } | ||
camelia | False True True |
||
SmokeMachine | m: say set(1) =:= set(1) | ||
camelia | False | ||
Zoffix | SmokeMachine: but in `say set(1) =:= set(1)` that's no longer a single call | ||
SmokeMachine: there are two calls at compile time | |||
SmokeMachine | Zoffix: hum! now I got it!!! | ||
Zoffix | :) | ||
SmokeMachine | Zoffix: sorry, I think I did missread you earlier | 16:37 | |
16:37
aindilis joined
|
|||
Zoffix | SmokeMachine: each time it appears in the sauce, at compile time it gets executed and replaced by the result, so `for ^100 { say foo; say foo }` will call it twice at compile time, replace the calls with results, and at run time with print each one 100 times | 16:37 | |
SmokeMachine | woundnt be possible/better to make only once to every call with the same parameters? | 16:38 | |
Zoffix | And without `is pure` that would've been "at compile time call nothing, and then at run time **call** and then print each one 100 times" | ||
SmokeMachine: you'd gain speed, but you'd spend a lot of RAM storing all those results from every call | |||
SmokeMachine | but only at compile time, right? | 16:39 | |
timotimo | given that we rely on constant folding to do negative numbers, we'd be keeping every negative number around, for example | ||
Zoffix | SmokeMachine: no, at runtime too | ||
SmokeMachine | Zoffix: the constant fold isnt changing the ast? | 16:40 | |
sorry, at ast there are no functions yet... right? | |||
Zoffix ran out of brain | 16:41 | ||
timotimo | yeah, i'd expect the cache to be discarded when compilation is over | 16:42 | |
Zoffix | Ah, ok :) | ||
timotimo | well, at the end of optimization already | ||
SmokeMachine | I was thinking that once the `is pure` is found it would create a constant with the result of that call and change every call with that parameter to use that constant instead | ||
timotimo | no, that's not how it's implemented | 16:47 | |
Zoffix | SmokeMachine: how do you figure out if a call has the same parameter as another call had? | 16:48 | |
SmokeMachine | I mean only if its known at compile time | ||
timotimo | then you still have the troublesome task of deciding what objects count as "the same" | 16:49 | |
Zoffix | SmokeMachine: yeah, but how do you figure out that in `set(1, Foo); set(1, Foo)` both are using the same parameters? I imagine the cost of figuring that out, together with storing the results during optimization stage, might overall end up without a good boost | 16:50 | |
And that it's cheaper to just assume they're different. | |||
SmokeMachine | Zoffix: that makes sense... | ||
but would be faesable it Foo were Immutable too... (but I got it, thanks!) | 16:51 | ||
Zoffix | SmokeMachine: it is, 'cause it's just a type object, but you're gonna be calling .WHICH or eqaddr or something, which is what Set.new probably does under the hood, so your optimization to figure out if you can save calling Set.new would run in about the same time as actually calling Set.new and you'd still have to call Set.new most of the time, is what I mean it might look like at the end | 16:55 | |
Not that I'm an optimizatinon expert or anything. | |||
SmokeMachine | Zoffix: that makes sense... thanks! | 16:56 | |
Zoffix | Though on the topic of more expensive static optimizations: we could have an extra level optimizations for [installed] modules or something. This way, the scripts don't take ages to compile, but when you can spend some time to squeeze every last bit out of it, you'd set a higher optimization level and optimize a module to the max when installing it. | 16:57 | |
We already have the level controls | |||
Like here: github.com/rakudo/rakudo/blob/mast...1695-L1698 | |||
Those ops won't get optimized if you drop the level lower | |||
hobbs | set the controls for the heart of the sun | ||
16:58
dogbert17 joined
|
|||
lizmat | I could imagine an extra level that would look of the .WHICHes of pure objects that got WValled | 16:58 | |
keep those .WHICHes in a hash, and use the one from the hash if there's a match | 17:00 | ||
17:00
mirlur[m] joined
17:02
p6noob joined
|
|||
Zoffix | \o/ | 17:02 | |
p6noob | Hi :-) | 17:03 | |
Zoffix | \o | 17:04 | |
p6noob | use NativeCall; class B is repr('CStruct') { has uint32 $.b is required } ; B.new(:1b) give error "CStruct representation attribute not yet fully implemented..." but the same thing without "is repr('CStruct')" works just fine. | 17:05 | |
expected behavior maybe? | |||
sorry that "use NativeCall" is irrelevant to the example. | 17:06 | ||
Zoffix | p6noob: I think it's complaining about `is required` flag | 17:07 | |
p6noob | yes, it is for sure.. but all that changed was adding repr('CStruct') | ||
isn't it okay to still require a field be initialized by the .new caller for a CStruct? | 17:08 | ||
(using the implicit .new) | |||
17:08
hankache joined
17:09
committable6 joined,
ChanServ sets mode: +v committable6,
bisectable6 joined,
releasable6 joined,
squashable6 joined
|
|||
Zoffix | p6noob: no idea how the `repr()` stuff does things, but I filed a bug report: R#1993 | 17:10 | |
synopsebot | R#1993 [open]: github.com/rakudo/rakudo/issues/1993 Bogus(?) Error when `is required` an attribute of CStruct repr | ||
p6noob | Thank you Zoffix, I wasn't sure where to file the bug | ||
Zoffix | p6noob: github.com/rakudo/rakudo/issues is a good place | 17:11 | |
There are some more places listed on rakudo.org/bugs but if you're unsure where to go, just file in github.com/rakudo/rakudo/issues | 17:12 | ||
Geth | rakudo.org: 200adf0015 | (Zoffix Znet)++ (committed using GitHub Web editor) | templates/bugs.html.ep [REAPP] Add our User Experience Repo to list of bug trackers |
17:14 | |
17:14
benchable6 joined,
greppable6 joined
17:15
eliasr joined
17:17
Zoffix left
|
|||
Bowlslaw | failedis `zed upgrade` safe to run? | 17:19 | |
17:20
zaale joined
|
|||
Bowlslaw | i mean, "zef upgrade" | 17:20 | |
AlexDaniel | rindolf, Zoffix, jkramer, moritz, lizmat: can you try github.com/rakudo/rakudo/commit/e2...d3e8779ee0 ? | 17:28 | |
and let me know what you think | |||
17:33
zaale left
17:39
michael_s joined
|
|||
Tison | in nqp, how can I test if a file exist? | 17:41 | |
emmm, it seems like `try` | 17:42 | ||
17:43
lizmat left
|
|||
AlexDaniel | e: use nqp; say nqp::stat('Sakefile', nqp::const::STAT_EXISTS) | 17:45 | |
evalable6 | 1 | ||
AlexDaniel | e: use nqp; say nqp::stat(onetuhoneuhoanduasoiseoa', nqp::const::STAT_EXISTS) | ||
evalable6 | (exit code 1) 04===SORRY!04=== Error while compiling /tmp/eZuZcvtqxh Unable … |
||
AlexDaniel, Full output: gist.github.com/985534a181b8dc37d0...d5a0456639 | |||
AlexDaniel | e: use nqp; say nqp::stat('onetuhoneuhoanduasoiseoa', nqp::const::STAT_EXISTS) | ||
evalable6 | 0 | ||
AlexDaniel | Tison: maybe this? I don't know really | ||
Tison | I'm reminded that there is a test file 019-file-ops.t | 17:46 | |
let me take a look at that | |||
AlexDaniel | Tison: github.com/rakudo/rakudo/blob/e935....pm6#L1244 | ||
Tison | ok( nqp::stat('CREDITS', nqp::const::STAT_EXISTS) == 1, 'nqp::stat exists'); | ||
17:52
AlexDaniel` joined,
Matthew[m] joined,
unclechu joined,
AlexDaniel`` joined,
wictory[m] joined,
lance_w[m] joined,
ilmari[m] joined,
EuAndreh[m] joined,
CIAvash[m] joined,
Garland_g[m] joined,
mienaikage joined
17:54
sno joined
18:04
rouking joined
18:10
hankache left
18:11
yoleaux joined,
ChanServ sets mode: +v yoleaux
18:18
ChoHag left
18:19
zachk joined,
zachk left,
zachk joined
18:26
sauvin left,
ChoHag joined
18:29
empT joined,
empT left
18:33
Olorig joined
|
|||
Olorig | Hello Perl 6 people. Where can I find documentation about the next version of the language? Perl 6.d I suppose? | 18:34 | |
El_Che | Olorig: github.com/perl6/6.d-prep/blob/mas...EATURES.md | 18:42 | |
Olorig: read the remarks in github.com/perl6/6.d-prep | 18:43 | ||
(the readme) | |||
18:45
domidumont left
18:47
wamba joined,
murilo joined
18:48
darutoko left
18:50
murilo left
|
|||
Olorig | Thanks! Looks quite cosmetic | 18:50 | |
18:51
ChoHag left,
wamba left
18:52
wamba joined
18:53
samebchase joined
18:59
diegok left
19:07
Olorig left
19:08
Zoffix joined
|
|||
Zoffix | missed by that much :P | 19:08 | |
But wanted to say, those are just the TODOs. There's a huge number of features in 6.d, but a lot of them are available now, without the use of `use v6.d.PREVIEW`, because they don't conflict with the 6.c spec and don't have any adverse effects that would make us want to push them to 6.d | 19:09 | ||
So when 6.d is released, stuff like Str.uniparse will become officially part of the language., | 19:10 | ||
Bowlslaw | cool! | 19:12 | |
I wonder what kinda stuff you guys have... | |||
Perl 6 seems absolutely huge already. | |||
Zoffix | It's all on the map :) map.perl6.party/ | 19:13 | |
man, there's a bunch of stuff that says "will issue deprecation warnings in 6.d" but we won't actually be able to do it :| | 19:14 | ||
*in the docs it says | |||
jdv79 | p6 has virtually no complexity limit;) | 19:15 | |
Zoffix | meh, people keep saying how Perl 6 is huge... Yesterday, I was watching lizmat's talk and a bunch of Perl 5's routines she mentioned I never even heard of. | ||
jdv79 | keeps it interesting | ||
those are just historical oddities | 19:16 | ||
Zoffix | and in p6 they're just alternative syntaxes ;) | ||
jdv79 | ha | ||
Zoffix | AlexDaniel: looks good. Now I just need to remember to use it :) | 19:17 | |
Bowlslaw | Perl 5 is also huge | 19:19 | |
19:19
molaf left,
ChoHag joined
|
|||
Zoffix | Not according to Perl 5 people who keep trashing my p6 articles :P | 19:20 | |
Bowlslaw | wut?? | ||
btw, it's really cool that "my $client = Cro::HTTP::Client.new;" returns a promise | |||
Zoffix | Bowlslaw: "quite a few times now I thought it was time to start learning Perl 6 […] And every time some blog post like this one comes around and I think: no. There's so much utterly unreadable syntax in here." | 19:21 | |
:) | |||
Bowlslaw | lolwut | ||
it's unreadable for me | |||
then, i learn how to read it, and then it's readable | 19:22 | ||
mind = blown | |||
sena_kun | s/unreadable/I am too lazy to learn/ | ||
Bowlslaw | hm, I like Cro, and I'm probably going to start using it more, but I am worried that I don't understand react { whenever { } } yet | 19:23 | |
Zoffix | I don't understand it either, but that never stopped me :D | 19:25 | |
Bowlslaw | LOL | ||
I'm putting something on pastebin so I can ask for some clarification | |||
19:26
|oLa| joined
|
|||
Bowlslaw | pastebin.com/G0jrt99j | 19:27 | |
i don't understand the difference between reactwhenever and race | |||
if I want to use HTTP::UserAgent in a reach/whenever block, I can't just pass the result, because it's not a Promise | |||
whereas Cro::HTTP:Client IS a Promise | |||
Zoffix | `react` is an event loop basically, it sits and waits for the stuff in side of it to all be done. And the stuff is specified with `whenever`s and they can accept a bunch of things like Supplies and Promises. The .race thing is just an under-the-hood parallelizer. | 19:29 | |
m: react { whenever Supply.interval: ½ { say 10-$++; $++ ≥ 10 and done } }; say "Take off" | 19:31 | ||
camelia | 10 9 8 7 6 5 4 3 2 1 0 Take off |
||
Zoffix | it's like an "event loop" | 19:32 | |
"whenever $event-happens { do things }" | |||
Bowlslaw | $event-happens must be a Promise? | 19:34 | |
Zoffix | Bowlslaw: above it's a Supply | ||
m: react { whenever 42 {} } | 19:35 | ||
camelia | ( no output ) | ||
Zoffix | hm | ||
m: react { whenever class {} {} } | |||
camelia | ( no output ) | ||
Zoffix | I was expecting it to complain and tell me what sort of things it likes | ||
Bowlslaw | so, can I do something like... | ||
Zoffix | But it *can* be a Promise | ||
19:36
diegok joined
|
|||
Bowlslaw | react { whenever $ua..get($url) -> $response { get-link() } } | 19:36 | |
Zoffix | yeah | ||
Bowlslaw | is that concurrent? | ||
it is an HTTP::UerAgent object i believe | 19:37 | ||
Zoffix | No, just asynchronous | ||
You could do `react { whenever $ua..get($url) -> $response { start get-link() } }` | 19:38 | ||
like shove the get-link stuff into a promise | |||
Bowlslaw | ooh | ||
that would spawn a new thread for each new link? | |||
Zoffix | That would stick into the work queu | ||
e | |||
Bowlslaw | hmm | 19:41 | |
so I could make an on-demand Supply.. | |||
which fetches links... | |||
and whenever it fetches a link | |||
it processes it? | |||
Zoffix | ¯\_(ツ)_/¯ | 19:42 | |
Bowlslaw | lol | ||
Zoffix | I think I made something for you for that a couple days ago? | ||
With Supply.throttle | |||
Bowlslaw | i think so... | 19:43 | |
Zoffix | $ RAKUDO_SCHEDULER_DEBUG=1 perl6 -e 'await ^100 .map: { start sleep 0 }' 2>&1 | grep 'Added a general worker thread' | wc -l | 19:44 | |
0 | |||
$ RAKUDO_SCHEDULER_DEBUG=1 perl6 -e 'await ^100 .map: { start sleep .05 }' 2>&1 | grep 'Added a general worker thread' | wc -l | |||
9 | |||
$ RAKUDO_SCHEDULER_DEBUG=1 perl6 -e 'await ^100 .map: { start sleep ½ }' 2>&1 | grep 'Added a general worker thread' | wc -l | |||
57 | |||
Bowlslaw: ^ that's the answer to "would that spawn a new thread" | |||
The numbers are spawned threads | |||
Bowlslaw | i've been using $*THREAD | 19:45 | |
Zoffix | And that's the general queue, there's also affinity queue that's used in stuff like Proc::Async | ||
Where it tries to keep number of workers smaller or something | |||
oh and timer queue | 19:46 | ||
masak | why is the name "affinity queue"? because the tasks have an affinity to something? | ||
Zoffix | "General worker threads all pull from the main queue. If they have no work, they may steal from timer threads. Timer worker threads are intended to handle time-based events. They pull events from the time-sensitive queue, and they will not do any work stealing so as to be ready and available for timer events. Affinity worker threads each have their own queue. These are useful where events will be processed | 19:48 | |
using a Supply, which is serial, and so there's no point at all in contending over the data. Work will not be stolen from anaffinity worker thread." | |||
No idea. Ask jnthn :) | |||
affinity to their queue? :) | 19:49 | ||
masak | yeah, reads like | ||
my first association was "affine logic", which is not 100% unrelated, since it's also about resource usage | |||
but "the tasks have an affinity to this queue" sounds like the real reason for the name | 19:50 | ||
SmokeMachine | is there any way to use grammar to parse stream/supply of strings? | ||
masak | SmokeMachine: I think at some point there was supposed to be a Cat type, which is also Stringy like Str, but more lazy/unbounded | 19:51 | |
m: say Cat | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared name: Cat used at line 1. Did you mean 'Rat'? |
||
masak | haha | ||
Zoffix | :) | ||
masak | no, I did not mean Rat, camelia | ||
Zoffix | Nah, Cat is not yet implemented | ||
masak .oO( we just Ca't do that yet ) | |||
Zoffix | It'll need some regex diving | ||
SmokeMachine | masak: thanks | ||
Zoffix | And mad hax0r skills. | ||
SmokeMachine | is there any documentation showing how should it look like? | 19:52 | |
masak | almost certainly not | ||
Zoffix | SmokeMachine: I think there's brief mention of Cat in the speculations ( design.perl6.org ) | ||
SmokeMachine: basically a Cat to Str is what a Seq is to a List | 19:53 | ||
So it could be infinite, really | |||
masak | it's mentioned a total of 20 times in the spec | ||
SmokeMachine | got it! | ||
Zoffix | SmokeMachine: here's my failed attempt at implementing it: github.com/zoffixznet/perl6-Kitten#synopsis | 19:54 | |
Bowlslaw | Zoffix: I think I have something here, but I want to verify that it does that I think it does | ||
masak | which means it's entirely untested in practice | ||
oh, Zoffix++ has attempted it, cool :) | |||
SmokeMachine | and `Grammar.parse` should work on it | ||
Zoffix | Yeah, it's needed for some IO::Handle stuff | ||
Bowlslaw | Zoffix: What do you think of this? pastebin.com/auJt8Dyx | ||
SmokeMachine | how should it work with regexes? | 19:55 | |
Bowlslaw | jnthn helped me earlier with Cro, but I want to use HTTP::UserAgent and DOM::Tiny instead, for now anyway | ||
Zoffix | SmokeMachine: yeah, I think so. I know regexes are meant to work on them, so I think there'd be defined semantics on what would happen if you do `/^ ... $/` on a Cat. Would it die, like .elems dies on lazy lists? | ||
Bowlslaw | so I tried to transfer the idea of his code to mine | ||
Zoffix | Bowlslaw: you're probably better use Cro's user agent. It's possible HTTP::UserAgent is not thread safe (or rather the IO::Socket::SSL it uses or something) | 19:56 | |
Bowlslaw | hmmm | ||
SmokeMachine | Zoffix: why Kitten failed? | 19:57 | |
Zoffix | SmokeMachine: because you need to teach regexes/grammars to handle Cat type and my character is too low-level to hack on that yet :) | 19:58 | |
Bowlslaw | alright, thanks for the help | ||
I suppose Cro is the useragent stuff of Perl 6 now | |||
Zoffix | Bowlslaw: FWIW, your current setup is fine, but it's not gonna be fine if you move that inner sub out of react | 19:59 | |
m: use v6.d.PREVIEW; react { foo }; sub foo { whenever 42 {} } | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Cannot have a 'whenever' block outside the scope of a 'supply' or 'react' block at <tmp>:1 ------> 3EVIEW; react { foo }; sub foo { whenever7⏏5 42 {} } |
||
masak | I sometimes dream also of being able to do grammars on byte streams | ||
to do complex deserialization, essentially | |||
Bowlslaw | Zoffix: thanks | ||
Zoffix | It's forbidden in 6.d, because in 6.c it was allowed by accident, but it robs us of a lot of optimization opportunities | ||
19:59
Bowlslaw left
|
|||
Zoffix & | 20:00 | ||
20:00
Zoffix left
20:09
|oLa| left
20:10
kybr joined
20:22
|oLa| joined
20:23
espadrine joined
20:24
bartolin joined
|
|||
tbrowder_ | m: my $s=“#comment”; my $idx=rindex $s, ‘#’; say $idx | 20:25 | |
camelia | 0 | ||
20:27
|oLa| left
|
|||
tbrowder_ | hm, i’m getting a failure on that ^^^ on rakudo 2018.06-25-ge9351cb built on moar 2018.06 | 20:34 | |
testing master branch... | 20:35 | ||
20:37
Tison left
|
|||
AlexDaniel | 6c: my $s=“#comment”; my $idx=rindex $s, ‘#’; say $idx | 20:37 | |
committable6 | AlexDaniel, ¦6c (31 commits): «0» | ||
AlexDaniel | tbrowder_: ↑ looks correct? | ||
tbrowder_ | yes | 20:40 | |
SmokeMachine | 6c: my $s=“#comment#”; say rindex $s, ‘#’; say index $s, ‘#’ | 20:41 | |
tbrowder_ | i got my 2018.06 not as a download but as a tag from upstream | ||
committable6 | SmokeMachine, ¦6c (31 commits): «80» | ||
20:54
kaare_ joined
20:55
wamba left
20:58
wamba joined
21:02
mcmillhj left
|
|||
tbrowder_ | where are rakudo public keys located? | 21:04 | |
that info needs to be on rakudo website somewhere, maybe on the download page? | 21:05 | ||
21:08
mcmillhj joined
|
|||
tbrowder_ | AlexDaniel: am i missing info on rakudo website for public keys used to sign releases? otherwise, i'll file an issue. | 21:13 | |
21:14
turdmonkey joined,
turdmonkey is now known as Bowlslaw
|
|||
Bowlslaw | Hello again | 21:14 | |
AlexDaniel | tbrowder_: github.com/perl6/nqp/issues/426 | ||
21:18
mcmillhj left
21:19
skids left
|
|||
tbrowder_ | i could make entries on the rakudo website, or a pr if i could find the source of it. | 21:19 | |
AlexDaniel | tbrowder_: honestly I don't know where most people would expect to find a public key | 21:23 | |
if they download the tarball from the website, then IMO a public key located on that same website is of no use | |||
but 🤷 | |||
21:24
pmurias left
21:25
pmurias joined
|
|||
AlexDaniel | u: ∞ꝏꚙ | 21:26 | |
unicodable6 | AlexDaniel, U+221E INFINITY [Sm] (∞) | ||
AlexDaniel, U+A74F LATIN SMALL LETTER OO [Ll] (ꝏ) | |||
AlexDaniel, U+A699 CYRILLIC SMALL LETTER DOUBLE O [Ll] (ꚙ) | |||
tbrowder_ | not so, i think somehow magically when you sign you use your private key, so the public key from a key server (not on the website) then is used to check that you signed it | ||
21:28
Xliff joined
|
|||
Xliff | \o | 21:30 | |
Can you set a constant on an object? | |||
Or is that something you can do in the Unit? | |||
tbrowder_ | oh, and your key should be signed by someone else, etc., to establish a chain of trust. debian or the perl foundation may have some better info on established key trust chains | ||
21:31
mcmillhj joined
|
|||
AlexDaniel | tbrowder_: that's an interesting idea | 21:33 | |
tbrowder_ | what we need to do at perl gatherings is to have prearranged key signing sessions, everyone checks ids and signs keys, can be loads of fun! lots of info on how to go about that. | ||
AlexDaniel | tbrowder_: I think debian maintainers simply use the same key to check new releases | ||
tbrowder_: so if someone else cuts the release (with a different key obviously), then we'd have to notify them | |||
or maybe we should even multi sign them? I don't know | 21:34 | ||
that's a wonderful question and I'd love to know what's the proper way to do it | |||
tbrowder_ | the guys at edument (jnthn, masak, etc.) could start, and someone like lizmat and drforr and jmerelo who go to lots of perl places could establish a pretty good trust chain in a short while | ||
AlexDaniel | fwiw I've never been to any conference… :) | 21:35 | |
tbrowder_ | the details for that i've seen. i'll find it and put it somewhere easy to find. | ||
21:36
Bowlslaw left,
kaare_ left
|
|||
tbrowder_ | and that's a good excuse for you to go to one or more conferences, or at least meet some of the gang in a small, informal gathering somewhere! | 21:36 | |
21:37
mcmillhj left
|
|||
tbrowder_ | here's the debian howto: wiki.debian.org/Keysigning | 21:38 | |
pretty straight forward | 21:39 | ||
AlexDaniel | so rust tars are signed with this key: keybase.io/rust | 21:42 | |
and I wonder who has access to the private key then | |||
21:47
benjikun joined
|
|||
AlexDaniel | yeah I should look more into this stuff | 21:48 | |
21:50
Xliff_ joined,
turdmonkey joined
21:51
Xliff left,
mcmillhj joined
21:52
turdmonkey is now known as Bowlslaw
21:56
mcmillhj left
21:58
pmurias left
21:59
pmurias joined,
pmurias left
22:00
rindolf left
22:01
lizmat joined
|
|||
benjikun | Bowlslaw: how are you? | 22:02 | |
Bowlslaw | benjikun: Pretty good. jnthn and some others showed me Cro. I had been looking at it for a bit, but I just started using it today. | 22:06 | |
How about you? | |||
benjikun | Bowlslaw: sweet, I'm writing a forum in cro and my personal website uses it now too | ||
doing pretty good | |||
all things considered | |||
Bowlslaw | Haha, I am planning on writing my website in Cro and hosting it on my RPi | 22:07 | |
22:07
_Xliff_ joined
|
|||
benjikun | It's pretty comfy if you've used libraries like it before in other languages | 22:09 | |
22:10
Xliff_ left
|
|||
xi- | Cro looks pretty great | 22:15 | |
AlexDaniel | yeah | 22:20 | |
22:23
MasterDuke left
22:24
MasterDuke joined
22:27
perlpilot joined
22:30
xq joined
22:44
HaraldJoerg left
|
|||
buggable | New CPAN upload: FindBin-0.1.7.tar.gz by LEMBARK modules.perl6.org/dist/FindBin:cpan:LEMBARK | 22:44 | |
22:48
natrys left
22:53
michael_s left
23:00
sena_kun left
23:06
nativecallable6 joined,
statisfiable6 joined
23:07
mcmillhj joined
|
|||
tbrowder_ | ref: cro does anyone know of a website using it that has all or most of the code in public view? i would love to see an example cookbook solution with either nginx or apache. | 23:09 | |
23:10
girst left
|
|||
timotimo | you'd do it the same way you'd do any web app; mod_proxy to the port your endpoint runs at | 23:11 | |
23:11
mcmillhj left
|
|||
_Xliff_ | I am actually thinking about moving some in-dev projects to Cro. | 23:19 | |
Was actually curious if some aspects of HTTP::UserAgent were used in the design of Cro. Now it looks like the similarities are due to the protocol more than anything else. | 23:20 | ||
Still, I think some of the documentation could use some work. :) | |||
23:20
girst joined
23:26
mcmillhj joined
|
|||
_Xliff_ | Who works on the edument.se pages? | 23:26 | |
"Jonathan's work with Comma shows once again our skills in Per, but also our ability to build development tools, especially on the IDEA platform." - Acke Salem / CEO | |||
^^ s/Per/Perl/ | |||
tell jnthn edument.se/en/news/now-we-launch-comma <- This page has a mispelling of Perl in the quote from the CEO. | 23:27 | ||
.tell jnthn edument.se/en/news/now-we-launch-comma <- This page has a mispelling of Perl in the quote from the CEO. | |||
yoleaux | _Xliff_: I'll pass your message to jnthn. | ||
23:31
mcmillhj left
23:40
mcmillhj joined
23:42
benjikun2 joined
23:45
mcmillhj left
23:46
benjikun left
23:47
wamba left
23:54
mcmillhj joined
|