»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
00:00
telex joined
00:04
cognominal joined,
kurahaupo_ left
00:05
telex left
00:06
telex joined
00:07
leont left,
cognominal left,
n0tjack joined,
kurahaupo_ joined
00:11
telex left
00:12
n0tjack left,
telex joined
00:18
telex left,
telex joined
00:20
mprelude left
00:21
n0tjack joined
00:24
telex left,
telex joined,
telex left
|
|||
zostay | m: $_ = "xyz"; .=subst(/(.)(.)/, { "$1$0" }, :g); .say | 00:25 | |
camelia | rakudo-moar 1bd727: OUTPUT«yxz» | ||
00:26
n0tjack left,
telex joined
|
|||
zostay | m: $_ = "xyz"; .=subst(/(.)(.)/, { "<$1>$0<>" }, :g); .say | 00:27 | |
camelia | rakudo-moar 1bd727: OUTPUT«<y>xz» | ||
zostay | m: $_ = "xyz"; .=subst(/(.)(.)/, { "<a$1>$0<>" }, :g); .say | 00:28 | |
camelia | rakudo-moar 1bd727: OUTPUT«<ay>xz» | ||
zostay | m: $_ = "xyz"; .=subst(/(.)(.)/, { "<a$1>$0</a>" }, :g); .say | ||
camelia | rakudo-moar 1bd727: OUTPUT«Use of Nil in string context in block at /tmp/K3gDPdltxM:1<ay>z» | ||
zostay | m: $_ = "xyz"; .=subst(/(.)(.)/, { "<a$1>$0<a>" }, :g); .say | ||
camelia | rakudo-moar 1bd727: OUTPUT«Use of Nil in string context in block at /tmp/JLfEqqzFFr:1<ay>z» | ||
zostay | what is up with that? i don't get it | ||
ah, i see... i hadn't realized that <> worked with interpolation... need to skim through S02 again | 00:31 | ||
00:32
telex left,
telex joined
|
|||
ShimmerFairy | zostay: yeah, I think jnthn's SPW slides even mentioned that as a common gotcha (though I may be misremembering) | 00:33 | |
m: $_ = "xyz"; .=subst(/(.)(.)/, { "<a$1>$0\<a>" }, :g); .say | 00:34 | ||
camelia | rakudo-moar 1bd727: OUTPUT«<ay>x<a>z» | ||
00:34
Peter_R left
|
|||
ShimmerFairy | zostay: ^^^ you can escape the opening bracket, to give you a solution directly :) | 00:34 | |
00:38
aborazmeh left,
telex left
00:39
telex joined
00:44
samb1 joined,
telex left
00:45
telex joined
00:49
kurahaupo_ left
00:51
telex left,
telex joined
00:53
n0tjack joined
00:57
telex left,
telex joined
00:58
n0tjack left
01:01
Sqirrel_ left,
notostraca is now known as TEttinger
01:03
telex left,
telex joined
01:06
Sqirrel joined
01:09
telex left,
telex joined
01:10
lichtkind left,
telex left
01:12
telex joined
01:17
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:18
telex left,
telex joined
01:23
telex left
01:24
telex joined
01:26
n0tjack joined
01:29
telex left
01:30
telex joined,
n0tjack left
01:34
telex left
01:35
telex joined
01:37
tokuhiro_ joined
01:39
dalek left
01:40
telex left
01:41
JimmyZ left,
telex joined,
tokuhiro_ left
01:45
ilbot3 left
01:46
telex left
01:47
ilbot3 joined,
telex joined
01:52
telex left
01:53
tokuhiro_ joined,
telex joined
01:58
telex left
01:59
n0tjack joined,
telex joined,
vendethiel joined
02:03
n0tjack left
02:04
telex left
02:05
telex joined
02:10
telex left
02:11
telex joined
02:16
telex left
02:17
telex joined,
telex left
02:18
telex joined
02:22
vendethiel left
02:23
telex left
02:24
telex joined
02:30
telex left,
telex joined
02:31
n0tjack joined
02:33
tping joined
02:35
telex left
02:36
telex joined
02:37
n0tjack left
|
|||
japhb | .ask tony-o Is there a reason JSON::Faster isn't Panda-visible? Also, is it compatible with both pre- and post-glr? | 02:41 | |
yoleaux | japhb: I'll pass your message to tony-o. | ||
02:41
telex left
02:42
telex joined
02:47
telex left
02:48
telex joined
02:53
telex left,
noganex_ joined
02:54
telex joined,
Ben_Goldberg joined
02:56
colomon left
02:57
noganex left,
BenGoldberg left
02:59
telex left
03:00
telex joined
03:02
krunen joined
03:03
kaare_ joined
03:04
n0tjack joined,
telex left
03:06
telex joined
03:08
n0tjack left
03:11
telex left
03:12
telex joined
03:17
telex left
03:18
telex joined
03:23
telex left
03:24
telex joined
03:26
khw left
03:27
colomon joined
03:29
telex left,
khw joined,
telex joined
03:30
telex left
03:32
telex joined
03:36
n0tjack joined
03:38
telex left,
telex joined
03:41
n0tjack left
03:43
telex left
03:44
telex joined
03:49
telex left
03:50
telex joined
03:52
khw left
03:55
telex left
03:56
telex joined
04:01
telex left
04:02
telex joined
04:04
Ben_Goldberg left
04:07
telex left
04:08
telex joined
04:09
n0tjack joined
04:12
telex left
04:13
n0tjack left
04:14
telex joined
04:19
telex left
04:20
telex joined
04:25
telex left
04:26
rmgk_ joined,
rmgk is now known as Guest39417,
Guest39417 left,
rmgk_ is now known as rmgk,
telex joined
04:31
telex left
04:32
telex joined
04:34
baest_ is now known as baest
04:37
telex left
04:38
telex joined,
telex left
04:40
telex joined
04:42
n0tjack joined
04:45
telex left
04:46
n0tjack left,
telex joined
04:51
telex left
04:52
telex joined
04:54
lolisa joined
04:55
skids left
04:57
telex left
04:58
telex joined
05:03
telex left
05:04
telex joined
05:06
aborazmeh left
05:09
telex left
05:10
telex joined
05:14
n0tjack joined
05:15
telex left
05:16
telex joined
05:19
n0tjack left,
laouji left,
laouji joined
05:21
telex left
05:22
telex joined
05:27
telex left
05:28
telex joined
05:33
telex left
05:34
telex joined
05:39
telex left
05:40
telex joined
05:44
quester joined,
quester left,
quester joined
05:45
telex left
05:46
telex joined,
telex left,
n0tjack joined
05:48
telex joined
05:51
n0tjack left
05:53
telex left
05:54
telex joined
05:56
[Sno] left
05:59
telex left
06:00
telex joined
06:05
telex left
06:06
telex joined
06:08
quester left,
diana_olhovik_ joined,
quester joined,
quester is now known as Guest84576
06:11
Guest84576 left,
telex left
06:12
telex joined
06:13
echo`division joined,
echo`division left
06:14
domidumont joined
06:15
rurban joined
06:18
telex left,
telex joined,
temp-q joined
06:19
temp-q left,
temp-q joined,
domidumont left,
n0tjack joined
06:20
temp-q is now known as quester,
domidumont joined
06:23
n0tjack left
06:24
telex left,
telex joined
06:30
telex left,
telex joined
06:36
telex left,
thou left,
telex joined
06:41
telex left
06:42
telex joined
06:47
telex left
06:48
telex joined,
telex left
06:50
telex joined
06:51
n0tjack joined
06:55
telex left
06:56
telex joined,
n0tjack left
07:00
abraxxa joined
07:02
telex left,
telex joined
07:03
lizmat joined
07:04
silug joined
07:05
Ven joined,
_mg_ joined,
z448 joined
07:08
telex left,
kjs__ joined,
telex joined,
z448 left
|
|||
timotimo | japhb: its code has been merged into JSON::Fast | 07:10 | |
07:13
telex left
07:14
telex joined
|
|||
BooK | heya #perl6 | 07:15 | |
I was wondering how to write documentation for my perl6 modules^H | 07:16 | ||
07:16
aborazmeh joined,
aborazmeh left,
aborazmeh joined,
FROGGS joined
|
|||
masak | morning, #perl6 | 07:17 | |
BooK: since there's not really a CPAN where things are put on display, there's not really an emerged standard for how/where to write documentation. | |||
BooK: that said, attaching Pod comments to things is quite great. | 07:18 | ||
07:18
YuviPanda is now known as RagePanda
|
|||
FROGGS | o/ | 07:18 | |
yoleaux | 13 Sep 2015 23:49Z <japhb> FROGGS: \o/ | ||
BooK | I'm sure there's a perl6 flavour of pod, right? | ||
FROGGS | Pod (instead of POD), yes | ||
masak | see S26. | 07:19 | |
07:19
telex left
|
|||
masak | I needed to refer to it just now to remember that it's #| that means "comment attaches to thing after". | 07:19 | |
cschwenz | BooK: maybe look at github.com/perl6/doc/ for examples? | ||
masak | m: say "" | 07:20 | |
camelia | rakudo-moar 1bd727: OUTPUT«» | ||
masak | m: #| This comment gets attached to the classclass C {}; say C.WHY | ||
camelia | rakudo-moar 1bd727: OUTPUT«This comment gets attached to the class» | ||
masak | BooK: ^ | ||
07:20
telex joined
|
|||
BooK | masak, cschwenz: thanks, will do | 07:20 | |
masak | also works for attributes, parameters, variable declarations, etc. | ||
07:20
RagePanda is now known as YuviPanda
|
|||
BooK | it's a really weird feeling to write code without being supported by a whole infrastructure | 07:21 | |
what an adventure! | |||
masak | :D | ||
cschwenz | ;-) | ||
masak | if you want to attach to something immediately after its declaration, you use #= | ||
07:24
n0tjack joined
07:25
telex left
07:26
telex joined
07:28
n0tjack left
07:31
telex left
07:32
telex joined
07:37
dalek joined,
ChanServ sets mode: +v dalek,
psch left,
cschwenz left,
telex left,
xfix joined,
xfix left,
xfix joined,
[Sno] joined
07:38
telex joined
07:40
thou joined
07:43
telex left
07:44
telex joined
07:45
thou left,
kjs__ left
07:49
zakharyas joined,
telex left
07:50
telex joined
07:51
masak joined
07:55
telex left,
telex joined
07:57
n0tjack joined
07:58
psch joined
08:01
telex left,
n0tjack left,
telex joined
08:03
lizmat left
08:06
quester left,
telex left
08:07
telex joined,
telex left,
leont joined
|
|||
jnthn | morning, #perl6 | 08:08 | |
08:08
telex joined
|
|||
nine | Good morning, jnthn | 08:08 | |
jdv79 | mornin | 08:09 | |
08:11
Possum left
|
|||
nine | jnthn: I'll probably have a couple of hours hacking time this evening. Anything particular on your TODO list I could have a look at? | 08:11 | |
jnthn | nine: Taking a look at the RTs marked GLR and seeing if you can take on any of those (or filtering out those that need design calls) would be useful | 08:13 | |
08:13
darutoko joined
08:14
aborazmeh left
|
|||
nine | jnthn: ok, I've already started that yesterday. I may as well continue :) | 08:14 | |
08:14
darutoko- joined
|
|||
jnthn | :) | 08:15 | |
timotimo | jnthn: i highlighted you with a few lines - i neglected to .tell them; it's about the benchmark i gisted your way yesterday | ||
jnthn | timotimo: OK :) | ||
timotimo | about how a surprising amount of very simple infix operators end up getting called rather than inlined | 08:16 | |
08:17
darutoko left
08:20
lolisa left
08:21
darutoko joined
|
|||
jnthn | That's 'cus the inliner doesn't know about native refs yet :) | 08:23 | |
08:23
darutoko- left
|
|||
jnthn | We often can statically inline those things though | 08:23 | |
08:25
araujo joined
08:26
araujo left
|
|||
timotimo | right. but they don't end up inlined by spesh either | 08:26 | |
FROGGS | but doesnt 'statically inline' point to rakudo's optimizer rather than spesh? | 08:27 | |
08:27
araujo joined
08:28
araujo left,
brrt joined
|
|||
timotimo | that's right | 08:28 | |
neither of the two is able to do it, but i thought spesh at least should be able | 08:29 | ||
08:29
Possum joined
|
|||
timotimo | maybe it also needs to learn that a lexref, attrref or localref can be passed like a regular native value? | 08:29 | |
brrt | good * | 08:30 | |
yoleaux | 12 Sep 2015 12:01Z <masak> brrt: in brrt-to-the-future.blogspot.fr/2015...ng-up.html there seems to be missing text around "I hereby promise that if any Oh". also, overnegation in "I will not maintain the illusion here that a register allocator is a nontrivial component" ? | ||
12 Sep 2015 18:20Z <timotimo> brrt: what's "quite high-level talk, so I hereby promise that if any Oh, and I just " all about? %) | |||
08:30
n0tjack joined
|
|||
timotimo | ohai brrt! | 08:30 | |
brrt | ohai | ||
yes | |||
i will fix it | |||
fixedit | 08:32 | ||
:-) thanks | |||
08:34
Possum left,
cschwenz joined
08:35
n0tjack left
08:41
Possum joined
08:43
dakkar joined
08:47
ab5tract_ joined
08:48
grondilu left
08:49
ab5tract_ left,
grondilu joined,
telex left
08:50
CQ joined,
telex joined
08:52
El_Che joined
08:55
telex left
08:56
telex joined,
mprelude joined
09:00
El_Che left
09:01
telex left
09:02
telex joined,
araujo joined,
FROGGS left,
n0tjack joined
09:03
FROGGS joined
|
|||
timotimo experiments with the static optimizer's trial bind and multi-dispatch analysis stuff | 09:04 | ||
when fiddling around with it, i may start to understand things | |||
09:05
El_Che joined
09:06
n0tjack left
09:07
telex left
09:08
telex joined
09:09
cschwenz left,
kjs__ joined,
Ven left,
domidumont left
09:10
domidumont joined
|
|||
masak | heh. Angular keeps imitation Perl 5/Perl 6 by extolling the virtues of interoperating across the version boundaries: angularjs.blogspot.se/2015/08/angul...tence.html | 09:10 | |
imitating* | |||
brrt | sincerest form of flattery | 09:11 | |
masak: one of the things i forgot to ask, where do you want to implement escape analysis? within rakudo or within moarvm? | 09:12 | ||
timotimo | brrt: there's already been a branch for escape analysis in moarvm | ||
which masak worked on | |||
brrt | orly | ||
hmm | |||
ok | 09:13 | ||
might as well do that, yes | |||
timotimo | i imagine escape analysis is much harder or perhaps impossible to do with any effectiveness inside rakudo | ||
09:13
telex left,
cognominal joined
|
|||
brrt | hmmm. i'm not sure about that | 09:14 | |
09:14
telex joined
|
|||
brrt | that's more or less an artificial effect from the fact that it's the VM that does the 'linking' | 09:14 | |
09:15
domidumont left
|
|||
|Tux| applauds | 09:15 | ||
test 50000 37.171 37.091 | |||
test-t 50000 37.080 37.000 | |||
09:16
rindolf joined,
domidumont joined
|
|||
brrt | \o/ | 09:16 | |
09:16
domidumont left
|
|||
timotimo | oh wow! | 09:16 | |
that's quite good indeed | |||
09:17
andreoss joined,
domidumont joined
09:19
telex left
|
|||
masak | could someone interpret those numbers for an uninitiated onlooker like me? | 09:19 | |
09:19
Alina-malina left
|
|||
masak | brrt: moarvm. | 09:20 | |
09:20
telex joined
|
|||
masak | brrt: are you starting in on escape analysis? I've been meaning to look more at it, but I haven't found the time. | 09:20 | |
neither, I imagine, has jnthn. | |||
brrt | not so much starting as thinking about it | ||
i have real life work to do :-P | 09:21 | ||
timotimo | got a non-ok type in - QAST::Op(call &METAOP_ASSIGN) | ||
- QAST::Var(lexical &infix:<->) | |||
-- parameter - QAST::Var(lexical &infix:<->) | |||
^- this seems like we should be able to look in the lexical environment to figure out the type is right for &infix:<-> to be put into METAOP_ASSIGN | |||
jnthn | timotimo: Even after I put in the thing to fix it? | ||
(fix the type, I mean) | 09:22 | ||
masak | brrt: we could have a good long chat at some point, maybe on privmsg? | ||
brrt: there are also some papers and PDFs I could dump on you. | |||
brrt | yeah, good idea. | ||
dump them pdfs :-) | |||
jnthn tires of admin work and decides it's time to hack :) | |||
FROGGS | jnthn: +1 | ||
:o) | |||
timotimo | jnthn: the thing? did i miss something? :) | ||
brrt | the jnthnzilla has awoken :-o :-p | 09:23 | |
jnthn | timotimo: Recently I did a patch to Optimizer.nqp that spots that nqp::ops can get annotated with nqp's native types and replaces them with Perl 6 ones :) | ||
timotimo: Which let us inline more things | |||
09:25
telex left
|
|||
timotimo | ah, right | 09:25 | |
yeah, there's no nqp:: op in there, though :) | |||
i stumbled upon those lines a few minutes ago | 09:26 | ||
09:26
telex joined
|
|||
timotimo | so they are in effect, i'm sure | 09:26 | |
now i'm a bit surprised by this: a call to &infix:<*> tells me the $type_ok result is 0 for a QAST::Want with a 'Nn' | |||
jnthn | odd | 09:27 | |
|Tux| | masak, 37.xxx is the time (in seconds) required to parse 10000 lines of CSV on my Text::CSV development box | ||
gist.github.com/Tux/b3b1d9c63f49b65b4881 <= over time | 09:28 | ||
timotimo | masak: we still have at least a factor of 10 of improvement in front of us if we want to be anywhere near good | ||
FROGGS | |Tux|: 50k lines, no? | ||
|Tux| | 50k fields, 10k lines | ||
09:29
thou joined
|
|||
FROGGS | ahh, I see | 09:29 | |
jnthn | FROGGS: I guess "skipped: Cannot compile C++ script" is expected on Windows/MSVC at this point? :) | ||
timotimo | jnthn: that output only appears after the nqp translation code has had its chance to set $type_ok back to 1 | ||
FROGGS | jnthn: no, should Just Work™ | ||
timotimo | jnthn: in this case the nqp::istype($type, $!symbols.Mu) part causes $type_ok to be set to 0; i'll have a look at what exactly we annotate the want with | 09:30 | |
masak | |Tux|: so the applause was for a marginal improvement in the xxx part of 37.xxx ? | ||
|Tux| | yes | 09:31 | |
under 38 | |||
cognominal | hi, what's the specific purpose of the trailing comma if you can do the same with |@a ? In: my @a = < a b c >; .say for @a, | ||
FROGGS | jnthn: I can re-check on my box later, but it would be nice and helpful anyway if you'd posted me the output of one of the skipped test files | ||
09:31
telex left
|
|||
|Tux| | masak, and the fact that it is going the right way: down | 09:31 | |
09:32
telex joined
|
|||
jnthn | FROGGS: gist.github.com/jnthn/283979d6120c2278ee0e | 09:32 | |
FROGGS: It's not finding/using cl, but rather trying g++, it seems. | |||
cl is certainly available and in the path though | |||
FROGGS | jnthn: hmmm, it is using cl first, then g++ if cl failed... | ||
09:33
thou left
|
|||
psch | FROGGS: on hack it's trying clang and failing, fyi | 09:33 | |
FROGGS | jnthn: ohh, I've got a thinko in my script | ||
it compiles with cl, succeeds, doesnt care, tries g++, fails | |||
jnthn | m: sub a { return $^a andthen .Int }; a(Str).perl.say; a(42).perl.say | 09:34 | |
camelia | rakudo-moar 1bd727: OUTPUT«Str42» | ||
jnthn | m: sub a { return ($^a andthen .Int) }; a(Str).perl.say; a(42).perl.say | ||
camelia | rakudo-moar 1bd727: OUTPUT«()42» | ||
jnthn rejects RT #126050 with a reminder about precedence :) | |||
09:35
n0tjack joined
|
|||
psch | FROGGS: gist.github.com/peschwa/123396eb36802a474005 (in case that's not covered by the same thinko) | 09:36 | |
jnthn | RT #126047 too :) | 09:37 | |
dalek | kudo/nom: 63077a5 | FROGGS++ | t/04-nativecall/CompileTestLib.pm: handle successful case of compiling C++ script |
||
kudo/nom: 00bd81b | FROGGS++ | t/04-nativecall/CompileTestLib.pm: delete files created during testing |
|||
09:37
telex left
|
|||
brrt | .tell TimToady i think that @answers{@slice} = 42 xx * should be @answers[@slice] = 42 xx * | 09:38 | |
yoleaux | brrt: I'll pass your message to TimToady. | ||
brrt | and that it's really cool | ||
09:38
telex joined,
telex left
09:39
n0tjack left
|
|||
andreoss | what is the difference between Any and (Any)? | 09:39 | |
dalek | kudo/nom: 54ce37c | FROGGS++ | t/04-nativecall/CompileTestLib.pm: handle succeeded C++ compilation even better |
09:40 | |
09:40
brrt left,
telex joined
|
|||
FROGGS | psch: can you try again on hack? | 09:40 | |
jnthn | FROGGS: Now they pass on Windows :) | ||
FROGGS | \o/ | 09:41 | |
jnthn | t\04-nativecall\11-cpp.t ............. ok | ||
t\04-nativecall\13-cpp-mangling.t .... ok | |||
:) | |||
FROGGS++ | |||
09:41
Alina-malina joined
|
|||
psch | FROGGS: sure, just have to rebuild... | 09:41 | |
FROGGS | psch: that'd be great :o) | ||
09:46
telex left,
telex joined,
pmurias joined
|
|||
psch | FROGGS: yup, works | 09:47 | |
pmurias | hi | 09:48 | |
jnthn thinks he has a fix for RT #126033 :) | 09:50 | ||
jdv79 | timotimo: any idea why the qt profiler doesn't load moritz's 93M json file? | 09:51 | |
09:51
El_Che left
09:52
telex left,
telex joined
09:53
El_Che joined
|
|||
psch | m: my $x; say $x.VAR.WHAT | 09:53 | |
camelia | rakudo-moar 00bd81: OUTPUT«(Scalar)» | ||
dalek | p: 989fde6 | jnthn++ | src/QRegex/Cursor.nqp: Store decont'd $!orig in Cursor. Otherwise, things like "$a = $a ~~ /./" will end up with trying to substr(.orig, ...) when looking at the Match object, which now is pointing to the Match itself rather than the original string. |
09:57 | |
09:58
telex left
|
|||
dalek | kudo/nom: b949144 | jnthn++ | tools/build/NQP_REVISION: Bump NQP_REVISION for Cursor fix. |
09:58 | |
09:58
telex joined
|
|||
dalek | ast: 6043ba0 | jnthn++ | S05-match/capturing-contexts.t: Test for RT #126033. |
09:58 | |
jnthn | nine: RT #126032 is another one you could probably hunt down fairly easily :) | 10:00 | |
10:01
itz_ joined
|
|||
itz_ | morning * | 10:01 | |
jnthn | o/ itz_ | ||
pmurias | \o | 10:02 | |
psch | m: my int $x is default(42) # doesn't die on jvm | ||
camelia | rakudo-moar 00bd81: OUTPUT«5===SORRY!5=== Error while compiling /tmp/VDlczaLKHBCan't use trait 'is default' on a native.at /tmp/VDlczaLKHB:1------> 3t $x is default(42) # doesn't die on jvm7⏏5<EOL> expecting any of: constraint» | ||
psch | and it doesn't die because accessing the descriptor works | ||
calling &say on it, however, gives a SOE | |||
calling &so.&say on it dies appropriately... | 10:03 | ||
jnthn | Oh, phew, we don't have a huge CORE.setting regression in the last few days... | ||
(Build time, I mean) | |||
jnthn had MVM_SPESH_DISABLE=1 MVM_CROSS_THREAD_WRITE_LOG=1 set :) | |||
psch | i'm thinking that still points somewhere at lazy stuff somehow :/ | ||
jnthn | psch: That's...very good :S | 10:04 | |
psch | because i sincerely hope that all those SOE are somehow related | ||
10:04
telex left
|
|||
jnthn | psch: Uh, very *odd* | 10:04 | |
psch | jnthn: :D | ||
jnthn | psch: Maybe the QAST -> JAST isn't getting sink context right enough? | ||
10:04
telex joined
|
|||
|Tux| | for those who speak dutch, this is nice news to read: webwereld.nl/development/88760-disn...-in-lampje | 10:04 | |
psch | jnthn: that's probably a good hint, i'll try if i can find anything around there | 10:05 | |
10:05
ShimmerFairy left
|
|||
psch | jnthn: it fits, 'cause every SOE i saw up to now goes via sink into reify, into pull-* into new, new, CREATE, BUILDALL | 10:05 | |
and the last 4 loop, with 2 or 3 anons in between | |||
jnthn | |Tux|: And even for those of us how can only guess at the odd words, the paper referenced in there i in English :) | ||
10:07
n0tjack joined
10:10
telex left,
telex joined
10:12
n0tjack left
|
|||
timotimo | jdv79: perhaps QJson isn't built for such big data files? perhaps there's some streaming design we could use instead? | 10:13 | |
aha, the .returns of those Want nodes seems to be NQPMu | 10:15 | ||
that's not all right | |||
jnthn | timotimo: That probably just means "we didn't set it" | 10:16 | |
timotimo: And it's hard to set a .returns on a QAST::Want | |||
timotimo: 'cus there's not just one answer | 10:17 | ||
timotimo | should analyze_args_for_ct_call introspect Want nodes? | ||
er | |||
it already does, but it gets stopped because the Want doesn't set an appropriate .returns | 10:18 | ||
10:19
ShimmerFairy joined
|
|||
nine | jnthn: so I'm not the only one who opens links despite the language being foreign ;) | 10:22 | |
FROGGS | psch: awesome, thank you | 10:23 | |
psch | FROGGS: fyi, removing the clone hack also works now | 10:25 | |
FROGGS | psch: yeah, I was hoping for that :o) | ||
dalek | kudo/nom: b3d2f2a | peschwa++ | src/Perl6/Actions.nqp: Remove jvm-specific workaround. Thanks to nqp commit 0c26f68d we don't need this workaround anymore. |
10:26 | |
psch | i want to motion for moving moar generated source files out of src/ | 10:27 | |
it's a tad annoying when greping :P | |||
10:28
ShimmerFairy left
|
|||
FROGGS | psch: +1 | 10:28 | |
move all under gen/<vm> | 10:29 | ||
psch | nqp and moar also do src/gen | 10:31 | |
i'm not gonna touch the latter, i don't deal with it that often :) | 10:32 | ||
timotimo | moar does src/gen? | ||
psch | timotimo: yeah, looks like it | ||
timotimo: might be the purpose is different, though | 10:33 | ||
config.h probably is rightfully generated | |||
pmurias | weird moarvm realloc failure: paste.debian.net/311618 | ||
psch | (and i think i misread my grepping wrt nqp...) | ||
timotimo | ah | ||
right | |||
[ptc] | m: [[[[["a", "b"], "c"], "a"], "d"], "e"].flat | ||
camelia | ( no output ) | ||
[ptc] | m: [[[[["a", "b"], "c"], "a"], "d"], "e"].flat.perl | ||
camelia | ( no output ) | ||
pmurias | if I pass this file to nqp-m I get a realloc error | ||
timotimo | [ptc]: try .say | ||
[ptc] | m: [[[[["a", "b"], "c"], "a"], "d"], "e"].flat.say | 10:34 | |
camelia | rakudo-moar b94914: OUTPUT«([[[[a b] c] a] d] e)» | ||
timotimo | [ptc]: btw, i only referred to your accent as hannoverian because you had talked about hannover a few minutes prior and i got confused :) | ||
[ptc] | timotimo: heh :-) | ||
nine | .oO(New Zealand, Hannover, all the same....we _are_ one) |
10:35 | |
[ptc] | silly question of the day: how does one completely flatten a nested set of arrays? | ||
FROGGS | nine: resistance is futile? | 10:36 | |
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.flat.say | ||
camelia | rakudo-moar b94914: OUTPUT«[[[[[(a) (b)] (c)] (a)] (d)] (e)]» | ||
timotimo | hahaha, wat :D | ||
[ptc] | nine: all ur accents are belong to us? | ||
FROGGS | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.Slip.say | ||
camelia | rakudo-moar b94914: OUTPUT«(([[[a b] c] a] d) (e))» | ||
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.flat.perl.say | ||
camelia | rakudo-moar b94914: OUTPUT«[[[[[("a",).Seq, ("b",).Seq], ("c",).Seq], ("a",).Seq], ("d",).Seq], ("e",).Seq]» | ||
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.flat.list.say | ||
camelia | rakudo-moar b94914: OUTPUT«[[[[[(a) (b)] (c)] (a)] (d)] (e)]» | ||
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.flat.>>.list.perl.say | ||
camelia | rakudo-moar b94914: OUTPUT«([[[[("a",).Seq, ("b",).Seq], ("c",).Seq], ("a",).Seq], ("d",).Seq], ("e",))» | ||
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.flat.>>.list.>>.flat>>.list>>.List.perl.say | 10:37 | |
camelia | rakudo-moar b94914: OUTPUT«(([[[(("a",).Seq,), (("b",).Seq,)], (("c",).Seq,)], (("a",).Seq,)], (("d",).Seq,)), (("e",).Seq,))» | ||
gfldex | timotimo: you may need a bigger hammer | ||
pmurias | error I get: paste.debian.net/311619 | ||
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.flat.>>.list.>>.flat>>.list>>.List>>.Str.perl.say | ||
camelia | rakudo-moar b94914: OUTPUT«($($[[[($("a",),), ($("b",),)], ($("c",),)], ($("a",),)], $($("d",),)), $($("e",),))» | ||
timotimo | it's getting better and better! | ||
pmurias | jnthn: is this error something that rings any bells for you? | ||
[ptc] is wondering how many .flat/.list are needed in the general case :-D | 10:38 | ||
10:38
Util joined
|
|||
jnthn | pmurias: 'fraid not | 10:38 | |
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.<>.perl.say | 10:39 | |
camelia | rakudo-moar b94914: OUTPUT«Cannot find method 'postcircumfix:<( )>' in block <unit> at /tmp/r_Tu1Ycy5d:1» | ||
timotimo | m: [[[[["a", "b"], "c"], "a"], "d"], "e"]>>.[].perl.say | ||
camelia | rakudo-moar b94914: OUTPUT«Cannot find method 'postcircumfix:<( )>' in block <unit> at /tmp/JXrg04zWwa:1» | ||
timotimo | m: say [[[[["a", "b"], "c"], "a"], "d"], "e"].map: *.[] | 10:40 | |
camelia | rakudo-moar b94914: OUTPUT«([[[[a b] c] a] d] e)» | ||
timotimo | m: say [[[[["a", "b"], "c"], "a"], "d"], "e"].map: *.[].flat | ||
camelia | rakudo-moar b94914: OUTPUT«(([[[a b] c] a] d) (e))» | ||
timotimo | >_< | ||
10:40
n0tjack joined
10:41
ShimmerFairy joined
10:44
dayangkun left
10:45
n0tjack left
|
|||
[ptc] | timotimo: hrm, doesn't look that easy... | 10:47 | |
10:47
silug left,
silug joined
|
|||
nine | m: sub flatten(@a) { @a.map: {$_ ~~ List ?? flatten($_).Slip !! $_} }; say flatten([[[[1, 2], 3], 4], 5]).list.perl; | 10:48 | |
camelia | rakudo-moar b94914: OUTPUT«(1, 2, 3, 4, 5)» | ||
timotimo just doesn't know anything | |||
didn't timtoady show a pretty simple and short piece of code for that yesterday or two days ago? | |||
jnthn | m: say gather [[[[["a", "b"], "c"], "a"], "d"], "e"].deepmap(*.take) | ||
camelia | rakudo-moar b94914: OUTPUT«(a b c a d e)» | ||
[ptc] | oh, that looks better | 10:49 | |
nine | ah, gather/take! | ||
timotimo | but that takes continuations and such | ||
jnthn | timotimo: Not sure about the say case, but in the eager case (e.g. you assign the result to an array) it own't | ||
*won't | |||
my @a = gather ...; # won't take a continuation any more, just keep going | 10:50 | ||
timotimo | oh? neato | ||
jnthn | Yeah, that's one of the changes I did while re-working gather/take for GLR | ||
pmurias | jnthn: that's bad it also seems to disappear when chaning unrelated parts of the test :( | ||
timotimo | <3 | ||
jnthn | pmurias: Memory errors usually do. | ||
timotimo | m: my @result; [[[[["a", "b"], "c"], "a"], "d"], "e"].deepmap({ @result.push $_ }); say @result | ||
camelia | rakudo-moar b94914: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gpxFhszrrvTwo terms in a rowat /tmp/gpxFhszrrv:1------> 3 "a"], "d"], "e"].deepmap({ @result.push7⏏5 $_ }); say @result expecting any of: infix infix stopper s…» | ||
timotimo | m: my @result; [[[[["a", "b"], "c"], "a"], "d"], "e"].deepmap({ @result.push: $_ }); say @result | ||
camelia | rakudo-moar b94914: OUTPUT«[a b c a d e]» | ||
10:52
domidumont left
|
|||
psch | irclog.perlgeek.de/perl6/2015-09-13#i_11210147 | 10:53 | |
re: flat [[[]]] | |||
pmurias | jnthn: so what should I do about that error as it's causing a test failure when the js-merge-wip branch is merged in | ||
10:53
domidumont joined
|
|||
psch | m: say flat ((((1,),),),); say flat [[[[1,],],],] # should both be flattened | 10:54 | |
camelia | rakudo-moar b3d2f2: OUTPUT«(1)([[[1]]])» | ||
timotimo | ah | ||
pmurias | jnthn: I could embark on a MoarVM bug hunt, but I'm not sure how successfull it will be if it's some serious gc issue rather than some silly error | 10:55 | |
10:55
laouji left
10:56
laouji joined
|
|||
timotimo | pmurias: how about turning spesh on and off? and you can also try making the nursery much smaller | 10:56 | |
like 1/4th of what it is now, or 1/16th | |||
that'll make GC problems much more likely to happen; also there's a flag to make spesh more agressively kick in on frames, that is known to cause builds to fail ;( | 10:58 | ||
jnthn: gist.github.com/timo/9c30f942f14a8d468e9f ← looks nice to have | 10:59 | ||
11:00
laouji left
|
|||
dalek | kudo/nom: 934893b | timotimo++ | src/Perl6/Optimizer.nqp: compile-time dispatch shall inspect a Want node's WVal. |
11:03 | |
11:06
st_iron joined
|
|||
st_iron | hi | 11:06 | |
timotimo | ohai | ||
11:07
kjs__ left
|
|||
leont | perl6-debug-m is broken for me after upgrade this weekend -_ | 11:07 | |
-_- | |||
"Unhandled exception: ctxlexpad needs an MVMContext" | |||
(somewhere deep in the CORE.setting) | 11:08 | ||
itz_ | grrr the repl likes consuming seq values | 11:09 | |
11:09
kjs__ joined
|
|||
leont | Anyone got a clue? | 11:10 | |
FROGGS | leont: not yet, sorry | 11:11 | |
leont: please file an RT ticket so sombody will look at it | 11:12 | ||
nine | timotimo: just curious. Is there any direct performance benefit of your Optimizer commit to be expected? | ||
11:12
n0tjack joined
|
|||
timotimo | not 100% likely | 11:13 | |
pmurias | nqp-m: say(nqp::findcclass(nqp::const::CCLASS_ANY, "123", 9, 10)) | ||
camelia | nqp-moarvm: OUTPUT«19» | ||
timotimo | it can cause very simple operators to be inlined more often | ||
pmurias | under the jvm ^^ returns 3 | ||
not sure what's the behavior I should standardize towards | 11:14 | ||
* standardise | |||
leont | Will try rebuild, maybe I just build from an unlucky commit or some such | ||
timotimo | nine: there's some work left to do to cope with lexicalref and such, not 100% sure where exactly it'll go, though | 11:15 | |
pmurias | jnthn: there is a difference in the way findcclass works on moar and the jvm | ||
jnthn: which way is correct? | |||
11:17
thou joined,
n0tjack left
11:21
thou left
11:22
Ven joined
|
|||
psch | pmurias: i think the difference is because moar has NFG | 11:24 | |
(that's on a glance, though...) | |||
timotimo | um, wha? | ||
"123" should really not be different in NFG vs whatever else | 11:25 | ||
this is more about the edge case where the start and range parameters are higher than the length of the string, no? | |||
pmurias | timotimo: yes | 11:26 | |
timotimo: in the moarvm the start+range is returned | 11:27 | ||
psch | ...shows what i can discern on a glance :) | ||
pmurias | timotimo: on the jvm the length of the string is returned | ||
timotimo: it could be just a bug | |||
timotimo: the improved nqp-js test suit found this | 11:28 | ||
ShimmerFairy | ops.markdown says "[...]return the position of the first character after the given range, or the length of the string, whichever is smaller", so that's a MVM bug | ||
11:28
laouji joined
|
|||
timotimo | gist.github.com/timo/4505a55475ea1b51a5b8 - jnthn, do you have a clue why the outer two add operations don't get inlined, but the inner muls do? i thought perhaps it's about the Stmts + Stmt, but putting a "while $type =:= NQPMu and it's a stmt or stmts with a single child, $_ := $_[0]" in the same part that also handles Want now didn't change anything about this | 11:29 | |
dalek | ecs: 6cc6cd1 | (Steve Mynott)++ | S07-lists.pod: remove surplus 'an' |
||
pmurias | ShimmerFairy: the docs were likely written based on reading the code | 11:34 | |
11:34
kjs__ left
|
|||
jnthn | pmurias: I think all that we rely on is that if we find anything, the value returned will be within the string | 11:35 | |
ShimmerFairy | pmurias: "length of string at most" makes sense to me, however :) . (Granted, it's just a difference of $result == nqp::chars($str) using >= instead, but still (for uses of findcclass going to the end of string, naturally)) | ||
jnthn | pmurias: As in, the regex code-gen emits a < check against eos | 11:36 | |
pmurias | jnthn: should I change moar or the jvm/js? | 11:39 | |
leont | Got a short example of the crash at last | ||
perl6-debug-m -e 'if 0 { }' | |||
pmurias | jnthn: even if the exact details of the return value aren't used I think having consistency between backends is important | 11:41 | |
jnthn | pmurias: If you want to patch Moar that's fine by me :) | ||
itz_ | " |(1, 2) # a Slip, a list which flattens into a surrounding List" < =- I thought that was $(1,2) or am I missing something? | 11:42 | |
ShimmerFairy | I'd prefer maintaining compat with jvm and ops.markdown, as well as generally not giving blown-up values just because you tried to go way beyond the EOS :P | ||
timotimo | nope, $ is the other direction; it'd prevent flattening | 11:43 | |
jnthn | m: say (1, |(2, 3), 4).perl | ||
camelia | rakudo-moar 934893: OUTPUT«(1, 2, 3, 4)» | ||
itz_ | ah ok thanks | ||
11:45
n0tjack joined
11:50
n0tjack left
|
|||
itz_ | S07++ | 11:50 | |
dalek | kudo/nom: 17d7a17 | peschwa++ | / (2 files): Ignore the gen/ directory directly. |
11:55 | |
kudo/nom: 92ef047 | peschwa++ | tools/build/Makefile- (2 files): Adjust Makefiles for JVM and Moar. With this Moar and JVM both place generated source files in gen/moar and gen/jvm respectively. |
|||
p: 1f46367 | jnthn++ | tools/build/MOAR_REVISION: Bump to a MOAR_REVISION with various fixes. |
|||
psch | ...i really hope it's platform agnostic enough, what i did with the Makefiles | 11:56 | |
although i guess it worked on jvm before | |||
also one more build dep: creating gen/{moar,jvm}, which we previously didn't have because only jvm put stuff there | |||
i'll also remove src/gen, i guess | 11:57 | ||
leont | "platform agnostic enough" is all relative after having had to deal with perl5's VMS Makefile ;-) | ||
dalek | kudo/nom: f21f00b | peschwa++ | src/gen/README: Remove placeholder README. We're not putting anything generated there anymore, so we don't need the placeholder. |
11:58 | |
kudo/nom: 48e0037 | jnthn++ | tools/build/NQP_REVISION: Bump NQP_REVISION to get updated MoarVM. This brings in fixes to a nasty data race in MoarVM. While it had been there for a while, recent code-gen improvements made it more likely to show up. This should address the recent increase in crashes seen in multi-threaded programs. |
11:59 | ||
psch | hm, maybe i should've checked some git best-practices re: keeping gen folders around | ||
jnthn | psch: I normally shove a .gitignore inside of them | ||
psch | jnthn: right, that's what we had with gen/jvm - i opted to create them via the Makefile | 12:00 | |
jnthn: i'll defer to your judgement though, cause i'm pretty sure you have more git experience than me :) | |||
FROGGS | psch: on cu_load I've got again/still a BUILDALL infiniloop/SOE... how do you debug these things? gist.github.com/FROGGS/1fddec0c8c3ad5a86f29 | 12:05 | |
(besides banging the head against walls and such) | |||
dalek | kudo/nom: 002dfca | peschwa++ | / (2 files): Revert "Ignore the gen/ directory directly." This reverts commit 17d7a17f83a86639fcc7590094854a56c16429f0. |
||
kudo/nom: 3655638 | peschwa++ | / (3 files): We're not ignoring gen/{moar,jvm}, so we don't need to create them. |
|||
jnthn | psch: I'm OK with creating them in the Makefile too | ||
psch | jnthn: too late! | ||
jnthn | :) | ||
jnthn ain't fussy | |||
jnthn is hungry though | |||
lunch & | 12:06 | ||
psch | FROGGS: oh, mostly banging, tbh | ||
leont | How can I install a package when not having panda around? | ||
FROGGS | psch: k | ||
leont: copy it into site/lib | |||
timotimo | some bugs will make a satisfying "crunch!" sound when you step on them, but they're really fine and just play dead for a while, then escape to re-emerge somewhere else | ||
psch | FROGGS: what i tried with traits.pm is isolating the exact call by pulling the statement apart (i.e. "my \pkgs := nqp::hllize(); for flat pkgs") | 12:07 | |
FROGGS | m: say %*CUSTOM_LIB<site> | ||
camelia | rakudo-moar 934893: OUTPUT«/home/camelia/rakudo-inst-2/share/perl6/site» | ||
psch | FROGGS: but in the end that didn't really help, iirc... | ||
FROGGS | psch: the problem vanished IIRC | ||
psch | FROGGS: yeah, but i think that's because a different bug had a proper stacktrace and fixed the SOE as fallout | 12:08 | |
FROGGS: i don't really remember exactly, though... :) | |||
FROGGS: the fact that we still get a few of those SOEs speak for that | 12:09 | ||
FROGGS: iirc it was the Attribute bug that you had that i fixed with the "don't compare SC" patch... | 12:10 | ||
FROGGS | yeah... | ||
psch | which i think you found only because you worked around the flat hllize bug... | ||
timotimo | what are some noteworthy things that have been done since the SPW? | 12:11 | |
leont | It seems rakudo doesn't handle a relative path $*EXECUTABLE very well | 12:12 | |
FROGGS | timotimo: that the jvm backend was broken and is still a little bit shaky | ||
timotimo: and the C++ merge | 12:13 | ||
timotimo | the c++ merge is already noted down, thanks :) | ||
FROGGS | timotimo: first serious improvements due to/after GLR | ||
timotimo | noted already | ||
though i don't have very good examples | 12:14 | ||
FROGGS | well, Text::CSV | ||
.lines and .words and such | |||
timotimo | that's now as fast as it was a couple of months before the GLR or what? :) | ||
FROGGS | faster | ||
jnthn posted microbenchmarks that showed that | 12:15 | ||
leont | Doing that well is rather platform dependent, but really helpful for end users | ||
timotimo | oh | ||
right, today's change hasn't made it into that gist yet | |||
12:15
rindolf left
|
|||
timotimo | i meant T::CSV by "that", btw | 12:15 | |
12:15
[Coke] joined
|
|||
FROGGS | aye, 37s for the first time | 12:16 | |
12:16
kjs__ joined
|
|||
timotimo | and htmlify got quicker, too, right? | 12:16 | |
12:18
n0tjack joined
|
|||
FROGGS | I think so, yes | 12:18 | |
timotimo | i only see the "before" value in the irclog | 12:19 | |
FROGGS | Sep 13 21:48:36 <moritz>real13m11.531s | 12:22 | |
Sep 13 21:48:42 <moritz>used to be 21min. Wow. | |||
timotimo: ^^ | |||
timotimo | ah, there it is! | ||
12:22
n0tjack left
|
|||
timotimo | no "htmlify" nearby, that's why it was so hard for me to find :) | 12:22 | |
itz_ | if I have a var "our $foo" is there anyway of calling a ^method or similar to get the scope? | 12:28 | |
leont | I'm trying to debug the debugger, this is confusingx85 | 12:30 | |
12:30
larion joined
12:31
cschwenz joined
|
|||
andreoss | m: subset Z; class Y { has Z $.z }; my Y @y = do Y.new(:z($_)) for 1..10; my @z = @y».z; say @z.perl | 12:33 | |
camelia | rakudo-moar 365563: OUTPUT«[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]» | ||
12:34
cschwenz left
|
|||
andreoss | m: subset Z; class Y { has Z $.z }; my Y @y = do Y.new(:z($_)) for 1..10; say @y».z.perl | 12:34 | |
camelia | rakudo-moar 365563: OUTPUT«Array[Y].new(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)» | ||
itz_ | m: my $x = 42; say GLOBAL::<$x> | 12:35 | |
camelia | rakudo-moar 365563: OUTPUT«(Any)» | ||
andreoss | why is it not Array[Z]? | ||
itz_ | m: our $x = 42; say GLOBAL::<$x> | ||
camelia | rakudo-moar 365563: OUTPUT«42» | ||
12:37
El_Che left
|
|||
andreoss | m: subset Z; class Y { has Z $.z }; my Y @y = do Y.new(:z($_)) for 1..10; say (@=@y».z).perl | 12:37 | |
camelia | rakudo-moar 365563: OUTPUT«[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]» | ||
leont | I have an NQP match object, how can I debug anything about it? | 12:38 | |
FROGGS | leont: can you .DUMP it? | ||
ohh, dump probably | |||
leont | Cannot find method 'dump' | 12:39 | |
Same for DUMP | |||
FROGGS | NQPMatch has a dump method though... | 12:40 | |
leont | Well, it's also complaining it doesn't have a from method, so I guess it's getting something else passed | 12:41 | |
12:42
st_iron left
|
|||
FROGGS | you can print is $obj.HOW.name($obj) | 12:43 | |
12:43
n0tjack joined
|
|||
FROGGS | its* | 12:43 | |
leont | Ah! | 12:44 | |
timotimo | visit_2d_indices_cross 57633/s 5370/s | ||
1.0x 10.7x | |||
something got slower! | |||
leont | It's getting an NQPArray instead of an NQPMatch | ||
timotimo | did anybody else experience a drastic improvement in performance just by switching to GLR? | ||
leont | It seems 1c76b58e5 is the cause of my issue | 12:46 | |
itz_ | japh has a benchmark suite I think | ||
timotimo | i've run it; that's where that output came from | ||
leont | The debugger hasn't been updated to deal with it | ||
12:47
Ven left
|
|||
leont | I think I can fix this | 12:48 | |
timotimo | that's good news! | ||
jnthn | om nom nom | ||
leont | Will PR if tests succeed | 12:49 | |
timotimo | bon appetit, jnthnom | ||
jonathnom worthingnom | |||
has the GMR already been included in nom? | |||
12:50
hernanGOA joined
|
|||
jnthn | timotimo: I had a good appetite, but now I eated a plate of aloo dum and am quite full :) | 12:50 | |
timotimo: GMR hasn't yet, no | |||
12:50
Psyche^ joined,
itz_ left
|
|||
jnthn | timotimo: If you're doing the weekly you could mention the nasty data race I fixed and code-gen improvements :) | 12:51 | |
timotimo: What's the code of the benchmark that got slower? | |||
[Coke] | We have two months of Changelog going on. Please review and update. | 12:53 | |
12:53
TEttinger left
|
|||
[Coke] | Don't know if we need to be explicit on deprecations or just say "all". | 12:53 | |
12:55
Psyche^_ left,
Ven joined
|
|||
jnthn | .tell nine I've reviewed the GMR branch and I'm happy with how it's looking overall. The only point of discomfort is the ".key => my $ = .value" pattern that is common enough to make me wish we had a better way to do it. | 12:58 | |
yoleaux | jnthn: I'll pass your message to nine. | ||
timotimo | jnthn: github.com/japhb/perl6-bench/blob/...ks.pl#L442 | ||
jnthn | .tell nine Not sure I feel that's a merge blocker, though, and more in TimToady++'s hands to decide if we should do something about it :) | 12:59 | |
yoleaux | jnthn: I'll pass your message to nine. | ||
timotimo | let's use :=> for the "put the RHS into a scalar" thing; it looks a tiny bit like how we make object hashes | ||
... and so it's exactly the wrong way around | 13:00 | ||
dalek | kudo/nom: e7b27c4 | leont++ | src/perl6-debug.nqp: Handle new if statement definition This updates the debugger to deal with the syntax tree as it is created after 1c76b58e5. Without this commit, the debugger will die if your code contains any if statements. |
||
kudo/nom: bdcccf0 | jnthn++ | src/perl6-debug.nqp: Merge pull request #530 from Leont/debugger Handle new if statement definition |
|||
timotimo | pff, what kind of code contains if statements? | ||
13:00
brrt joined
|
|||
nine | Really | 13:00 | |
yoleaux | 12:58Z <jnthn> nine: I've reviewed the GMR branch and I'm happy with how it's looking overall. The only point of discomfort is the ".key => my $ = .value" pattern that is common enough to make me wish we had a better way to do it. | ||
12:59Z <jnthn> nine: Not sure I feel that's a merge blocker, though, and more in TimToady++'s hands to decide if we should do something about it :) | |||
13:00
rurban left
|
|||
leont | timotimo: I know, I write crazy stuff like that! | 13:01 | |
jnthn | I know, I mean it's 2015, you should be using polymorphism everywhere, not if statements! | ||
nine | jnthn: thanks for the review :) | ||
jnthn | timotimo: Gee, that range X range benchmark really is slow | 13:04 | |
13:05
thou joined
13:09
thou left
13:10
colomon left
13:12
colomon joined,
brrt left
13:14
brrt joined
13:15
pat_js left
13:16
El_Che joined
|
|||
[Coke] | RT: 1,030 tickets, 10 testneeded, 9 [GLR] | 13:17 | |
13:17
brrt left
|
|||
dalek | pan style="color: #395be5">perl6-examples: 76af694 | paultcochrane++ | t/000-check-dependencies.t: Summarise which dependencies are missing in check deps test |
13:23 | |
perl6-examples: cb245d9 | paultcochrane++ | t/categories/99-problems.t: | |||
perl6-examples: [99probs] sort scripts to test | |||
13:23
dalek left
13:24
dalek joined,
ChanServ sets mode: +v dalek,
telex left
13:26
khw joined,
telex joined
|
|||
nine | timotimo: my $k = 0; for 1 .. SCALE X 1 .. SCALE -> ($i, $j) { $k = $i + $j }; say $k; | 13:26 | |
jnthn | nine: I'm looking into that one at the moment :) | ||
nine | timotimo: is already a third faster than the version used in the benchmark | ||
pmurias | can I get a MoarVM commit bit or should I make a pull request on github? | 13:27 | |
jnthn | pmurias: PR | ||
m: say 1.84 / 2.17 | |||
camelia | rakudo-moar bdcccf: OUTPUT«0.847926» | ||
jnthn | Well, found an easy 15% off it | 13:28 | |
Along with a semantic inconsistency | |||
Need to spectest this first | |||
m: my \a = gather { for ^5 { .say; .take } }; my \b = gather { for ^5 { .say; .take } }; for a X b { } | 13:31 | ||
camelia | rakudo-moar bdcccf: OUTPUT«0123401234» | ||
13:32
rurban joined
|
|||
pmurias | jnthn: I made the PR | 13:36 | |
13:36
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
Ven | twitter.com/mistydemeo/status/6418...5243102208 <- I really, really, really like we're actually using higher-order functions in Perl. | 13:37 | |
dalek | kudo/nom: 831b7cb | jnthn++ | src/core/List.pm: Make flat(...) consistent with .flat. It now also returns a Seq, which means we don't end up storing any intermediate values - both a memory and speed improvement. |
13:40 | |
kudo/nom: aaa4363 | jnthn++ | src/core/List.pm: Fix permutations. This was the one victim in the spectests of the flat/.flat consistency fix. |
|||
13:40
brrt joined,
rurban left
|
|||
jnthn | timotimo: found ^^ while looking into the benchmark you pointed out | 13:40 | |
13:41
rurban joined
13:42
hernanGOA left
13:44
hernanGOA joined,
El_Che left
|
|||
Ven didn't realize there was a difference between | and `flat` | 13:47 | ||
well, no, that's wrong. I guess | is Slip, rather | |||
TimToady | speaking of which, we need a slurpy style for the one-arg rule, and at the moment I'm leaning towards *| for that | 13:50 | |
yoleaux | 09:38Z <brrt> TimToady: i think that @answers{@slice} = 42 xx * should be @answers[@slice] = 42 xx * | ||
TimToady | brrt: yes, that was a booboo | ||
timotimo | will be afk for ~4h | ||
13:51
laouji left,
Ven left
13:52
brrt left,
El_Che joined,
Ven joined,
laouji joined
13:53
aborazmeh left
|
|||
jnthn | infix:<X> is...interesting :) | 13:57 | |
nine | And hasn't gotten much love since the initial GLR fixes | ||
jnthn | Yeah | 13:58 | |
jnthn is loving it now | |||
Well, or trying :) | |||
Ven | TimToady: slurpy style for the one-arg rule? | ||
nine | Ven: the flatten a single iterable argument into the slurpy, except if it's itemized | 13:59 | |
pmurias | how do I make nqp write moar bytecode? | 14:00 | |
nine | pmurias: nqp --target=mast I believe | 14:01 | |
jnthn | nqp --target=mbc --output=foo.moarvm | ||
pmurias | --target=mbc does it | 14:02 | |
TimToady | speaking of slurpies, if we ever want * to default to something else, we'd better replace the current flattening syntax with something else now | 14:03 | |
pmurias | and the test file which is causing the realloc error passes if I split the compilation and running | ||
jnthn | timotimo: Do we want that? | ||
oops | |||
TimToady: ^^ | 14:04 | ||
I'd thought the current *@foo semantics were the right ones, fwiw | |||
TimToady | with the idea that whatever mark we put on the * for explicit flattening, could also be used to mark X or Z for flattening their args and results | ||
*_ doesn't work though, if there's no sigil | 14:05 | ||
awwaiid | Is there an updated Periodic Table of Operators? My co-workers linked to a 2009 one, which I suspect is out of date. | 14:07 | |
TimToady | not yet | ||
jnthn | yay, my patch survives spectest | ||
m: say 0.83 / 1.84 | 14:08 | ||
camelia | rakudo-moar bdcccf: OUTPUT«0.451087» | ||
14:08
itz joined
|
|||
jnthn | m: say 0.83 / 2.17 | 14:08 | |
camelia | rakudo-moar bdcccf: OUTPUT«0.382488» | ||
awwaiid | cool | ||
TimToady | is that for X? | ||
jnthn | The first number is improvement of X | ||
The second is improvement of X and flat | 14:09 | ||
14:09
tokuhiro_ left
|
|||
jnthn | That is, 1..100 X 1..100 now runs in 38% of the time it once did (including startup) | 14:09 | |
TimToady | given how many of our flats are applied to X and Z, I'm wondering if we have the default wrong there | ||
jnthn | That's still slower than I want it to be, but it's a good start :) | ||
TimToady | and maybe we should mark "bumpy" X and Z rather | 14:10 | |
FROGGS | let's use x and z as a flat-producing X and Z :o) | ||
TimToady | x is tooked | 14:11 | |
FROGGS | ups | ||
geekosaur | (Y and W, then you can distinguish between flat/not flat and mammals/birds >.> ) | ||
TimToady | well, zip used to be Y | 14:12 | |
dalek | kudo/nom: e5c1df1 | jnthn++ | src/core/List.pm: Various improvements to infix:<X>. Remove various superstitious bits of code that worked around the way things were pre-GLR. Then make sure we .list the things we are going to work over. It turns out that if a Range were one of the arguments to infix:<X> then indexing it would be rather more expensive than if we had done .list on it in the first place. |
14:13 | |
14:14
Skarsnik joined,
Sqirrel left,
Sqirrel joined
14:15
pat_js joined
14:16
aindilis left
14:17
aindilis joined
14:18
thou joined
14:20
Ven left
|
|||
pmurias | is there a way to skip entires tests file on the moar backend? | 14:22 | |
FROGGS | print "1..0\nReason"; exit 0; | 14:23 | |
or so | |||
pmurias | the test file doesn't compile | ||
14:23
hernanGOA left,
Sqirrel left
|
|||
FROGGS | eww | 14:23 | |
pmurias: then put it in a vm specific test directory | |||
14:23
Sqirrel joined
|
|||
FROGGS | like t/js | 14:23 | |
pmurias | t/not-moar ? | ||
FROGGS | O.o | 14:24 | |
pmurias: what is the test about? | |||
pmurias | FROGGS: it's an expanded version of test 84-loop-labels | ||
14:24
Ven joined
|
|||
FROGGS | ahh, so it is meant to run on all backends, right? | 14:25 | |
pmurias | FROGGS: it causes a memory issue, which doesn't appear if I add a few extra assignments | ||
FROGGS: yes | |||
14:25
brrt joined
|
|||
FROGGS | then it should reside in t/nqp or where the other tests are... but maybe just in a branch with an associated github issue | 14:25 | |
TimToady | pmurias: maybe #?rakudo.js emit BEGIN exit | 14:26 | |
or some such | |||
pmurias | TimToady: it's in nqp | ||
TimToady | ah | ||
14:27
hernanGOA joined
14:28
brrt left
|
|||
grondilu | m: say (1, 2) X+ (1 X* [1, 2]) | 14:28 | |
camelia | rakudo-moar aaa436: OUTPUT«===SORRY!===Cannot invoke this object (REPR: Uninstantiable)» | ||
nine | jnthn: using list unpack in the benchmark instead of flat() will still shave off another 30 %. Runs in 0.688s here | 14:29 | |
FROGGS | m: say (1, 2) X+ (1 X* |[1, 2]) | 14:30 | |
camelia | rakudo-moar aaa436: OUTPUT«===SORRY!===Cannot invoke this object (REPR: Uninstantiable)» | ||
14:30
pat_js left
|
|||
jnthn | nine: Interesting; I'd never considered unpacking too speedy :) | 14:34 | |
TimToady | m: say (1, 2) X+ flat(1 X* [1,2]) | ||
camelia | rakudo-moar aaa436: OUTPUT«(2 3 3 4)» | ||
jnthn is looking into an optimizer "missed opportunity" that can get some wins across the board, but it's...non-trivial. | |||
nine | jnthn: maybe it isn't. Maybe flat() is still just too slow | 14:35 | |
BooK is wondering if there's a Perl6 equivalent to Perl5's B::Deparse | |||
jnthn | nine: Actually the next hotspot on the list seems to be multi-arg map... | ||
14:35
skids joined
|
|||
nine | BooK: perl6 --target=ast | 14:36 | |
14:36
cschwenz joined
|
|||
Juerd | Is there a way to use the instance in the refinement block in "has $.foo where { ... }"? | 14:36 | |
nine | BooK: oh, forget that, I confused B::Deparse with something else | ||
14:37
cschwenz left
|
|||
jnthn | Juerd: no | 14:37 | |
BooK | nine: that's more like B::Concise, yes | ||
TimToady | a deparser would be...interesting... | ||
Juerd | jnthn: Is something like that planned, or will this not happen any time soon? | ||
BooK | just make perl6 --target=perl6 work :-) | ||
ugexe | Juerd: cant you do that in the constructor? | ||
timotimo | sounds like something that just requires doing? | ||
BooK | alias perl6tidy='perl6 --target=perl6' | 14:38 | |
jnthn | Juerd: Not planned; that's not how the scoping of where blocks in general works | ||
Juerd | ugexe: No, I have a constantly modifying tree, and I have to avoid that it becomes cyclic :) | ||
jnthn: Too bad. Thanks for the info! | |||
Might use a setter :( | |||
jnthn | Or do OO design and think up a nice name for the operation :P | 14:39 | |
nine | jnthn: is for @a -> ($a, $b) { ... } a multi arg map or do we hit the optimized single arg branch there? Might explain why list unpack is faster | ||
pmurias | I created issue #260 in MoarVM for that memory bug | ||
jnthn | nine: no, for @a -> $a, $b { } is | ||
Juerd | jnthn: It'd still be a setter in disguise :) | ||
TimToady | m: class A { has $.foo where { .say } }; A.new(:foo<bar>) | 14:40 | |
camelia | rakudo-moar aaa436: OUTPUT«bar» | ||
TimToady | Juerd: how I undersood your question ^^ | ||
Juerd | The application will keep track of where things are, barcode driven. So you can say that a certain device is in a specific box, on a shelf, in a room, in a building, etc. Containers can nest, but you can't put a box in itself, for example :) | ||
timotimo | he wants the instance of the class that owns the attribute | 14:41 | |
14:41
_mg_ left
|
|||
diakopter | m: class A { has $.foo where { .say } }; A.new(:foo<0>) | 14:41 | |
camelia | rakudo-moar aaa436: OUTPUT«0» | ||
FROGGS | hey diakopter | ||
Juerd | TimToady: I know it can access the newly assigned value. But I want to check that against existing attributes. | ||
TimToady: class Foo { has Foo $.child where { not-cyclic(self, $_) } } | 14:42 | ||
14:42
aindilis left
|
|||
Juerd | Easily solved with a setter, so I should probably just use that :) | 14:43 | |
14:43
aindilis joined
|
|||
timotimo | hmmm | 14:43 | |
diakopter | m: class A { has $.foo where { .say } }; A.new(:foo<<>>) | ||
camelia | rakudo-moar aaa436: OUTPUT«()» | ||
timotimo | i wonder if you can parameterize the type with the instance | 14:44 | |
Juerd | If I understand correctly, there's no concept of 'self' in a where block at all. | ||
(It's valid syntax, though. Is that a bug?) | |||
timotimo | and then check against that? | ||
Juerd | s/It's valid syntax/It compiles/ | ||
timotimo | it might blow up upon the first type check | ||
dalek | c: 9fe36fd | skids++ | lib/Language/subscripts.pod: Complete the post-glr slice truncation section |
||
Ven | m: say "to".chars>>.succ.join | 14:45 | |
camelia | rakudo-moar aaa436: OUTPUT«3» | ||
Juerd | timotimo: What does 'parameterize the type with the instance' mean? | ||
ugexe | role foo { has $.a is <some requirements>; } class bar { foo $.x } probably | 14:47 | |
timotimo | nah | 14:48 | |
jnthn | Ven: .comb, not .chars | ||
timotimo | role Uniquity[%values] { ... } | ||
Ven | jnthn: whoops. cargo-culting.. | ||
m: say "to".comb>>.succ.join | |||
camelia | rakudo-moar aaa436: OUTPUT«up» | ||
14:48
n0tjack left
|
|||
timotimo | now do it with HAL | 14:49 | |
jnthn, thanks for taking a look | 14:52 | ||
does this also entail changing the test itself to align with glr semantics like nine suggested? | |||
14:52
kjs__ left
|
|||
timotimo | annoyingly i cannot kick off a new run from my phone alone... | 14:53 | |
jnthn | timotimo: I think we should keep the benchmark as it is, though we can also include nine++'s suggestion too | 14:54 | |
timotimo | include it as an extra benchmark in the list? | 14:55 | |
jnthn | Yeah | ||
timotimo | does it work properly before glr? | ||
14:55
kjs__ joined
|
|||
jnthn | Think unpacking one? Believe so | 14:55 | |
timotimo | i have wondered if we could get some benchmarks reporting onto the same graph | ||
Ven starts debugging post-GLR breakages in his little scripts... | 14:56 | ||
timotimo | anyway, that can be done | ||
i will be AFP for two hours in a few minutes | |||
14:57
cognominal left
|
|||
timotimo | jnthn, did you also see the qast dump where only the innermost operation got inlined? | 14:57 | |
1é26 my local time | 14:58 | ||
14:58
laouji left
|
|||
timotimo | 3 hours ago | 14:58 | |
jnthn | timotimo: Didn't get to looking at that yet | ||
timotimo | 1326 | ||
jnthn | So...many...things... | ||
timotimo | hehe | ||
sorry | |||
afp | |||
Ven | obviously, `(1, 2 X 3, 4).map: { $^x + $^y }` broke post-glr... | ||
14:59
laouji joined
|
|||
zostay | the P6SGI discussion is getting lively.... we must remember that Perl6 is not Perl5 :) | 15:00 | |
rurban | SGI? | ||
zostay | standard gateway interface | ||
Ven | m: say ((1, 2, 3) (-) 1).perl | ||
camelia | rakudo-moar e5c1df: OUTPUT«set(3,2)» | 15:01 | |
zostay | like CGI, but 30 years better | ||
Ven | m: say (((1, 2), (3, 4), (5, 6)) (-) (1,2)).perl | ||
camelia | rakudo-moar e5c1df: OUTPUT«set(5,4,3,6)» | ||
jnthn | timotimo: At the moment I'm looking into the way dynamic compilation of code prevents the immediate block inlining optimization, fwiw. | 15:02 | |
rurban | PSGI, right? | ||
zostay | yes, but not really | ||
BooK | Ven: what does (-) do ? | ||
Ven | BooK: set intersection | ||
zostay | PSGI is synchronouish, but P6SGI is async | 15:03 | |
TimToady | set difference | ||
Ven | er, yes. difference. uhm. | ||
intersection would be (|), I guess | |||
15:03
laouji left
|
|||
eiro | BooK++ | 15:04 | |
oops... wrong chan. hello everyone | |||
BooK | ∆ is probably more readable, if not either to type :-) | 15:05 | |
also, wrong operator | 15:06 | ||
itz | odd I'm getting intermittent failures with prove -e perl6 | ||
awwaiid | zostay: I thought it was async in the streaming case, but pretty identical for the normal case (or at least indistinguishable)? | ||
BooK | mmm, I get to see how rusty my set theory is | 15:07 | |
awwaiid | also where is this lively discussion to which you refer? | ||
rurban | blogs.perl.org/users/sterling_hanen...ation.html probably | ||
awwaiid | cool | ||
hoelzro | o/ #perl6 | 15:08 | |
Ven | \o hoelzro | ||
TimToady | m: say (((1, 2), (3, 4), (5, 6)) ∖ (1,2)).perl | ||
camelia | rakudo-moar e5c1df: OUTPUT«set(5,4,3,6)» | 15:09 | |
15:09
tokuhiro_ joined
15:10
Ven left
|
|||
zostay | awwaiid: all apps are required to return a Promise, so they could do so synchronously if they really want to be jerks | 15:11 | |
awwaiid | seems like the API could sniff whether it was a promise or not | ||
BooK realizes that the things arount the set operators are lists, and they are turned into sets for doing the set operation | 15:12 | ||
operator-rich languages for the win :-) | |||
also ∖ is not \ # naughty | 15:13 | ||
15:14
tokuhiro_ left
|
|||
hoelzro | o/ Ven | 15:14 | |
15:14
Ven joined,
larion left
|
|||
TimToady | fortunately there's no infix:<\> to confuse it with | 15:15 | |
leont | Surely that could be used as a namespace operator! ;-) | ||
TimToady | PHPHPHPTHTHT! | 15:16 | |
jnthn | Yeah...Windows users will love it! :P | ||
flussence still cringes at that decision... "parsing is hard, which keyboard button haven't we used yet?" | 15:18 | ||
pink_mist | you have ∖ on your keyboard? 0_o | ||
flussence | only the ascii one | ||
(I wonder if there's some compose-key thing for the unicode one though, I can already type ≠ easily enough...) | 15:19 | ||
15:21
pat_js joined
|
|||
[Coke] | RT #126049 is new. tagged it [GLR] | 15:22 | |
leont | flussence: you can add your own compose-key thingies, I think | 15:23 | |
skids | On docs, is L<OtherDocPage#subsection> broken in htmlify, or is that not the right syntax to use? | 15:25 | |
BooK | if you really want to be operator rich, I guess you have to go beyond the keyboard | ||
flussence | leont: yeah, I just wish I knew how to get a list of existing ones... xmodmap won't tell me. | 15:26 | |
TimToady | BooK: which is okay--you only type something once, but you read it many times | ||
BooK | also, copy-paste! | 15:27 | |
15:27
dayangkun joined
|
|||
BooK | I've seen people copy-paste accented letters when they had an ascii-only keyboard/keymap | 15:27 | |
although, most give up pretty quick | |||
15:27
dayangkun left
|
|||
flussence | oh, I typed `man compose` absent-mindedly and it gave me exactly what I wanted... | 15:29 | |
15:29
dayangkun joined
15:30
diana_olhovik_ left
|
|||
TimToady eeks, got run-mailcap instead | 15:30 | ||
flussence | `man 5 compose` to be precise :) | ||
15:30
dayangkun left,
dayangkun joined
15:31
dayangkun left
|
|||
TimToady | last time I tried, that stuff fought with my Japanese input method | 15:31 | |
dalek | c: b628b18 | skids++ | lib/Type/Parameter.pod: Attempt to fix some links based on what a working link did. |
15:32 | |
15:32
dayangkun joined
|
|||
15:32
abaugher left,
dayangkun left
|
|||
flussence | no "SET MINUS" in these files, though there are a few lines for unicode set operators that take other set operators as compose input. Looks like whoever wrote this had a space cadet keyboard... | 15:33 | |
15:33
dayangkun joined
|
|||
jnthn | m: say 0.72 / 0.83 | 15:33 | |
camelia | rakudo-moar e5c1df: OUTPUT«0.867470» | ||
15:34
dayangkun left,
dayangkun joined,
abaugher joined
15:35
dayangkun left,
dayangkun joined
|
|||
jnthn crosses fingers, runs spectest | 15:36 | ||
15:36
dayangkun left,
dayangkun joined
|
|||
Ven | .oO( is that jnthn++'s secret to good code? Crossed fingers to code? ) |
15:37 | |
15:37
zakharyas left,
dayangkun left
|
|||
Ven | .o( I guess if you're nordic, and used to coding with mittens, crossed fingers are an actual improvement... *g* ) | 15:37 | |
leont | I think I'm running afoul with the longest token matcher :-s | 15:38 | |
I have a proto rule with a bunch of multi-rules. It doesn't seem to backtrack the way I had hoped it would :-/ | 15:39 | ||
It doesn't seem to try other "alternations" | 15:40 | ||
jnthn | The LTM-er should just decide an ordering to try the feasible ones | ||
BooK | does panda honor http_proxy and https_proxy environment variables? | ||
dalek | Heuristic branch merge: pushed 17 commits to rakudo/nom by FROGGS | 15:41 | |
skids | leont: RT#125374 maybe? | ||
jnthn wonders what FROGGS++ just merged :) | |||
dalek | line-Perl5/glr: 2a11020 | FROGGS++ | lib/Inline/Perl5.pm6: register module loader using CompUnitRepo This change will be needed *after* the `cu_load` branch has been merged. Do not merge before this point. |
||
line-Perl5/glr: e0901ba | FROGGS++ | lib/Inline/Perl5.pm6: Merge pull request #42 from FROGGS/patch-2 register module loader using CompUnitRepo |
|||
FROGGS | jnthn: the cu_load branch | ||
jnthn | FROGGS: One-sentence summary of what it does? :) | ||
dalek | ast: 621b348 | (Stefan Seifert)++ | S32-list/classify.t: Test that .classify evaluates &test only once for each item RT #126032 |
15:42 | |
kudo/nom: b4a9f56 | (Stefan Seifert)++ | src/core/ (2 files): Fix .classify assuming side effects We now make sure to only evaluate &test once for each element of the input list. Fixes RT #126032 This new implementation takes an Iterable instead of a List giving a speedup of 15 % for (1..500000).classify(* % 5) |
|||
15:42
xinming joined
|
|||
FROGGS | jnthn: when we load a module in user space it does that via CompUnit.load | ||
nine | jnthn: the first catch of the day :) | ||
jnthn | nine++ | ||
FROGGS++ | |||
FROGGS | jnthn: no Perl6::ModuleLoader involved anymore... well, except for merge_globals which jvm did not like | ||
nine | I love bug fixes that give speedups as a bonus :) | ||
leont | skids: that looks useful, will try | 15:43 | |
FROGGS | |Tux|: next time you upgrade you need to upgrade both rakudo *and* Inline::Perl5 | 15:44 | |
nine | FROGGS: you pushed to Inline::Perl5 glr branch instead of master | ||
FROGGS | grrr | ||
nine: thanks for telling me :o) | |||
nine | FROGGS: no g_l_r ;) | ||
FROGGS | doing it right now | ||
jnthn | m: say 4061 / 4163 | 15:45 | |
camelia | rakudo-moar e5c1df: OUTPUT«0.975498» | ||
jnthn | Another 2.5% off Test::CSV | ||
dalek | line-Perl5: 88513e7 | FROGGS++ | lib/Inline/Perl5.pm6: register module loader using CompUnitRepo This change will be needed *after* the `cu_load` branch has been merged. Do not merge before this point. |
||
FROGGS | there we go | ||
jnthn: in a distant future we should implement an op that loads a cu from memory, and then we can do nice things with databases | 15:46 | ||
leont | Ah, I think the mistake is mine, but I'm not sure how to fix it :-s | 15:47 | |
FROGGS | .tell lizmat I've merged the cu_load branch, we should perhaps focus now on getting precomp working again | ||
yoleaux | FROGGS: I'll pass your message to lizmat. | ||
dalek | kudo/nom: 7e265b6 | jnthn++ | src/Perl6/Optimizer.nqp: Perform the immediate block inlining more often. Previously, dynamic compilation meant we didn't do it as we might mess up closures taking at BEGIN time. However, that was overly pessimistic. We can in fact perform the optimization provided no possible closures exist to have been taken at BEGIN time. Improves quality of code in CORE.setting a good bit, knocking 4 GC runs and 2.5% of the runtime off Text::CSV, for example. |
15:48 | |
jnthn | Uh, off my local benchmark of it doing 10,000 lines | 15:49 | |
Skarsnik | Hi. It's a probably a stupid question but, can we call perl6 code in perl5? | ||
FROGGS | well, you specified the runtime percentage wise at least :o) | ||
Skarsnik: using Inline::Perl6, yes | |||
nine | Skarsnik: metacpan.org/pod/Inline::Perl6 | 15:50 | |
15:50
domidumont left,
pat_js left
|
|||
nine | Oh my .classify speedup is even 21 %. I accidentally included the .perl in my measurements | 15:51 | |
15:52
mprelude left
|
|||
FROGGS .oO( Ohh, my academic paper isn't 500 pages... I accidently included my cat... ) | 15:53 | ||
Skarsnik | Ok, thanks you x) | ||
jnthn | FROGGS: The number of GC runs less was absolute, though :) | 15:55 | |
m: say 48 / 52 | |||
camelia | rakudo-moar e5c1df: OUTPUT«0.923077» | ||
jnthn | 8% less or so :) | 15:56 | |
FROGGS | *g* | ||
[Coke] ponders tagging RTs that we know are post 6.0 instead of / in addition to those that are definitely < 6.0 | |||
[Coke] imagines it's probably a lot of churn for little benefit. | 15:57 | ||
15:57
Ven left
|
|||
CQ | [Coke]: well, if it focuses people on the right stuff and produces a "real" pre-6.0 bugcount to squash it might be worth it | 15:57 | |
[Coke] | jnthn: rt.perl.org/Ticket/Display.html?id=71544 look closable to you? | ||
CQ: right now the pre-6.0 list is: | 15:58 | ||
rt.perl.org/Ticket/Display.html?id=123766 | |||
FROGGS | [Coke]: 71544 looks good, yes | ||
jnthn | [Coke]: Believe so. | 16:00 | |
16:00
FROGGS left,
FROGGS[mobile] joined
|
|||
[Coke] | closing... | 16:00 | |
16:00
CQ left
|
|||
skids | [Coke]: If you're taking nominations for 123766, I think 125437 might be good to fix before 6.0. | 16:01 | |
[Coke] | anyone who is a bugadmin can add deps to the blocker ticket. | ||
skids | Well, me personally, I can't do much of anything if I log in, and I think we tried to fix that and it fizzled and we gave up. | 16:02 | |
[Coke] | you sure you were using the non-public interface? | 16:03 | |
skids | I'll try anything again -- how do I make sure I'm not? | ||
[Coke] | skids - need email address you use on RT. | 16:05 | |
dalek | pan style="color: #395be5">perl6-examples: 18afa95 | (Steve Mynott)++ | / (4 files): fix for GLR 4 tests more tests from 99probs |
16:07 | |
16:11
tokuhiro_ joined
16:15
tokuhiro_ left
|
|||
ugexe | FROGGS[mobile]: note the two `elsif $file {` github.com/rakudo/rakudo/blob/nom/...pm#L77-L83 | 16:19 | |
FROGGS[mobile] | ugexe: ohh ups... probably happened when merging branches | 16:21 | |
16:21
rindolf joined
|
|||
FROGGS[mobile] | I think the first elsif needs to go | 16:21 | |
ugexe | or elsif $file.IO.e | 16:22 | |
dalek | pan style="color: #395be5">perl6-examples: f337686 | (Steve Mynott)++ | t/000-check-dependencies.t: order deps alphabetically |
||
pan style="color: #395be5">perl6-examples: af42e9b | (Steve Mynott)++ | / (3 files): add new deps |
|||
16:23
xfix left
|
|||
FROGGS[mobile] | no, I think .candidates will handle that | 16:23 | |
I mean CURLF would | 16:24 | ||
or, hmmmm | |||
maybe you are right | 16:25 | ||
dalek | pan style="color: #395be5">perl6-examples: 7f8834e | (Steve Mynott)++ | / (4 files): correct dep name to Web |
||
pan style="color: #395be5">perl6-examples: 72ceb8d | (Steve Mynott)++ | htmlify.pl: revert debugging commit :/ |
16:26 | ||
16:27
dha joined,
dha left,
dha joined,
andreoss left
|
|||
jnthn | m: say 0.58 / 0.72 | 16:30 | |
camelia | rakudo-moar 7e265b: OUTPUT«0.805556» | ||
jnthn | m: say 0.58 / 2.17 | 16:31 | |
camelia | rakudo-moar 7e265b: OUTPUT«0.267281» | ||
16:31
larion joined,
alpha- joined
|
|||
alpha- | hello | 16:31 | |
jnthn | Yay, got that bad benchmark timotimo++ reported down to about a quarter of what it was. :) | 16:32 | |
hello, alpha- | |||
alpha- | are there any plans for perl6 browser integration? eg. <script type='text/perl6'>...</script> | ||
jnthn | I've not heard about anyone working on that; closest I'm aware of is ongoing work on Perl 6 -> JavaScript compilation | 16:34 | |
alpha- | I see, thanks | 16:35 | |
pink_mist | what does that entail? perl6 --target=js or something? | ||
16:36
xfix joined
|
|||
[Coke] | pink_mist: doesn't exist yet. | 16:37 | |
16:37
cognominal joined,
kjs__ left
|
|||
[Coke] | work is being done on nqp to target node.js | 16:37 | |
once that's in place, then work can be done to get a perl6-js compiler. | |||
(much like today there is a perl6-j and a perl6-m) | |||
dalek | kudo/nom: 57a7f6a | jnthn++ | src/core/Iterable.pm: Optimize .flat somewhat. This cuts a further 20% off "for 1..100 X 1..100 { }". |
||
jnthn | oops | 16:38 | |
Of "for flat 1..100 X 1..100 -> $i, $j { }" is what I shoulda said... | |||
Still plenty more to squeeze out of it, but I think that's a nice bunch of improvements for now :) | 16:40 | ||
16:42
kjs__ joined
16:43
kjs__ left,
itz left
16:44
perl6_newbee joined
|
|||
dha | Ok, wrote up some docs for C<state>. Thoughts? gist.github.com/dha/8009c28d7bf2d1ca8875 | 16:46 | |
16:47
abraxxa left
|
|||
dha | Also, I note that code blocks are being rendered oddly by perl6 --doc. First line is outdented by one character. | 16:47 | |
16:47
yqt joined
16:48
pmurias left,
yqt left
|
|||
flussence | m: say " " ~ ('foo', 'bar') | 16:50 | |
camelia | rakudo-moar 7e265b: OUTPUT« foo bar» | ||
flussence | probably that space. | 16:51 | |
(leaking in at Pod::To::Text line 40) | |||
16:51
larion left
|
|||
dha | Ok. Well *I'm* not going to try to fix that. :-) | 16:51 | |
hoelzro | .tell pmurias should I go ahead and complete that merge tonight? | 16:56 | |
yoleaux | hoelzro: I'll pass your message to pmurias. | ||
16:57
vendethiel joined
|
|||
masak | just want to check: has anyone else with a Perl blog received an email from guru99? | 17:05 | |
tadzik | nope | ||
arnsholt | Doesn't look like it, no | ||
masak | ok, just want to make sure how widely they're targeting. thanks. | 17:06 | |
17:07
perl6_newbee left,
telex left
17:08
telex joined
17:10
dakkar left
17:12
kjs__ joined
17:14
diana_olhovik_ joined
17:15
larion joined
|
|||
|Tux| | masak, DPW (NLPW) has | 17:18 | |
and he got quite a negative reaction for the shit his website contained | |||
of course we denied his request | 17:19 | ||
nine | Now I'm becoming curious... | ||
|Tux| | 👏 👏 👏 👏 | 17:21 | |
test 50000 36.525 36.446 | |||
test-t 50000 36.905 36.826 | |||
|Tux| off to badminton | 17:22 | ||
[Coke] | dha++ state docs. | 17:26 | |
dha | Do they look ok? | ||
[Coke] | masak: yes, I've gotten guru99 emails. | ||
hence the upvote, yes. | |||
ship it. :) | 17:27 | ||
dha | Heh. Ok. | ||
[Coke] | oh! no, I just have linkedin mails that include guru99 | ||
linkedin-- | |||
leont | Got it the same way |Tux| did, my review of his content had little mercyx85 | 17:29 | |
hernanGOA | o/ | 17:30 | |
[Coke] | Their inconsistent use of PERL vs. Perl is grating right off the bat. | ||
leont | Their lack of use strict isn't any better | 17:31 | |
And two arg open is very 90s too | 17:32 | ||
dha | "PERL is popularly known as duct tape of the internet." No, it is known as a way of telling if people know anything about Perl. | ||
I'm not reading any more of this. My blood pressure's probably high enough. | 17:33 | ||
jercos | funny, I see the exact same phrase on a fair number of sites... | 17:34 | |
with the same outline | 17:35 | ||
I wonder who's copying and pasting from whom? | |||
tony-o | is there a gist or a link somewhere? | ||
yoleaux | 02:41Z <japhb> tony-o: Is there a reason JSON::Faster isn't Panda-visible? Also, is it compatible with both pre- and post-glr? | ||
ab5tract | jercos: including the broken grammar? | ||
tony-o | .tell japhb because the META.json was broken | 17:36 | |
yoleaux | tony-o: I'll pass your message to japhb. | ||
leont | Not Panda-visible? I thought Panda was using JSON::Faster | 17:37 | |
ab5tract | dha: I like the `state` docs very much | 17:38 | |
dha | thanks! | ||
ab5tract | leont: JSON::Fast, apparently | 17:39 | |
dalek | ast: eaaec7a | (Stefan Seifert)++ | S16-filehandles/io.t: Test if .lines() really is lazy (RT #112716) |
||
dha | Ok, I'm committing | ||
jercos | ab5tract: indeed. | ||
ab5tract | dha: I feel a bit like there could be a bit of discussion about `perl6 -ne` | ||
for instance, you state that '$' is stateful for subroutines, but there is no subroutine definition in that example | 17:40 | ||
dha | Hm. patches welcome. to be honest, everytime I ask something about C<$> I get a little more confused. :-) | ||
ab5tract | s/you state/you mention/; # unintended pun | ||
dha | Ha! ;-) | 17:41 | |
ab5tract | dha: Yeah, not a blocker for immediate pushing, that's for sure. | ||
dha | ok. I'll toss it in, and we can add later if necessary. | ||
ab5tract | I finally learned why one would choose to use $ vs $_ | ||
:) | |||
17:42
domidumont joined
|
|||
leont | Just made the mistake of looking at the php section of the same site -_- | 17:42 | |
17:44
diana_olhovik_ left,
muraiki joined
|
|||
dalek | c: 87b2b50 | (David H. Adler)++ | lib/Language/variables.pod: Added doc for C<state> to lib/Language/variables.pod |
17:45 | |
dha | Ta. And also, da. | ||
17:50
rurban left
17:52
spider-mario joined
|
|||
masak | |Tux|, [Coke]: thanks. that's what I suspected. | 17:52 | |
I'm planning to reply to them, very politely, that I don't like their email, their site, or their course. | 17:53 | ||
nine | m: 1 X 1 X 1 X 1 | ||
camelia | rakudo-moar 57a7f6: OUTPUT«Method 'pull-one' not found for invocant of class 'List' in block <unit> at /tmp/gGFH4ZNHOt:1» | ||
nine | oooops | ||
m: 1 X 1 X 1 | 17:54 | ||
camelia | ( no output ) | ||
nine | Is it possible that we don't have any spec test for n-dimentional X with n > 3? | 17:55 | |
jnthn | Apparently :) | ||
.u � | |||
yoleaux | U+FFFD REPLACEMENT CHARACTER [So] (�) | ||
flussence | m: say 1 ZXZZX 1 | ||
camelia | rakudo-moar 57a7f6: OUTPUT«((((((1 1))))))» | ||
ab5tract | :O | ||
nine | what the? | 17:56 | |
flussence | b: say 1 ZXZZX 1 # wonder if this still works... | ||
guess not :) | |||
grondilu reads S07, learns about prefiw:<|> and is quite happy about it | 17:57 | ||
flussence | (that used to return a flat [1, 1] pre-glr... and have exponential runtime pre-nom) | ||
grondilu was a bit concerned about the verbosity of adding flat everywhere after GLR | |||
17:57
domidumont left
|
|||
grondilu | m: .say for 1, 2, |map &cos, ^10; | 17:59 | |
camelia | rakudo-moar 57a7f6: OUTPUT«1210.54030230586814-0.416146836547142-0.989992496600445-0.6536436208636120.2836621854632260.9601702866503660.753902254343305-0.145500033808614-0.911130261884677» | ||
grondilu | that looks cool | ||
17:59
domidumont joined
18:00
ssqq joined
|
|||
grondilu | however the example in S07 suggest to put | inside the closure given to map. Not sure if it matters that much. | 18:00 | |
TimToady | that's only if map is returning more than one thing at a time | 18:01 | |
jnthn | m: .say for 1, 2, |map { ($++, $_) }, <a b c d> | 18:02 | |
camelia | rakudo-moar 57a7f6: OUTPUT«12(0 a)(1 b)(2 c)(3 d)» | ||
jnthn | m: .say for 1, 2, |map { |($++, $_) }, <a b c d> | ||
camelia | rakudo-moar 57a7f6: OUTPUT«120a1b2c3d» | ||
jnthn | Vive la difference | ||
Or however French works | |||
vendethiel | différence :) | ||
TimToady | .oO(those French, they always have to be different...) |
||
jnthn | That's acute correction... :P | 18:03 | |
18:03
ssqq left
|
|||
TimToady | mark his words | 18:03 | |
vendethiel | *g* | ||
dalek | ecs: 3373e72 | (Lucien Grondin)++ | S07-lists.pod: fix typo |
18:04 | |
18:05
kjs__ left
|
|||
nine | Why do I always get suspicious when my first attempt at fixing seems to work? | 18:05 | |
18:06
kjs__ joined
|
|||
dha | I'm now glad I put all those TODOs into the docs. we seem to have cleared 5 of them. | 18:06 | |
18:07
patrickz joined
|
|||
nine | RT #114918 contains a benchmark that apparently took 146 seconds in 2012. It now completes in 8 seconds on my machine. | 18:08 | |
jnthn | Much wow :) | 18:11 | |
m: say 8/146 | |||
camelia | rakudo-moar 57a7f6: OUTPUT«0.054795» | ||
flussence | nine: I get suspicious sometimes too... things seem to work first try in Perl 6 way more than I'm used to :D | ||
18:12
tokuhiro_ joined
|
|||
skids | I used to get a rush when something worked first try, thinking "I'm starting to finally get good at this." With Perl 6 it's "don't get cocky, It's just because that language is smarter than you" | 18:15 | |
18:15
pippo joined
|
|||
pippo | o/ #perl6 | 18:15 | |
grondilu | skids: tell me about it : www.perlmonks.org/index.pl/?node_id=1004081 | 18:16 | |
pippo | m: say grep-index(<a b c d>, /a/); | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(0)» | ||
pippo | m: say grep-index(<a b c d>, /b/); | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(0)» | ||
pippo | m: say grep-index(<a b c d>, /c/); | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(0)» | ||
pippo | m: say grep-index(<a b c d>, 'c'); | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(0)» | ||
18:16
tokuhiro_ left
|
|||
pippo | m: say grep-index(<a b c d>, 'c')[^10]; | 18:17 | |
camelia | rakudo-moar 57a7f6: OUTPUT«(0)» | ||
pippo | my @a = <a b c d>; say grep-index(@a, /c/); | 18:18 | |
m: my @a = <a b c d>; say grep-index(@a, /c/); | |||
camelia | rakudo-moar 57a7f6: OUTPUT«()» | ||
cognominal | mock the French but fruity american "think different ™ " | ||
pippo | m: my @a = <a b c d>; say grep-index(|@a, /c/); | ||
camelia | rakudo-moar 57a7f6: OUTPUT«Regex object coerced to string (please use .gist or .perl to do that) in block <unit> at /tmp/cFYZwuNkjc:1()» | ||
skids | pippo: GLR has not gotten around to figuring out what sub forms flatten yet. | ||
m: say <a b c d>.grep-index(/c/) | 18:19 | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(2)» | ||
pippo | skids: Thank you very much! | ||
18:19
lizmat joined,
yqt joined
18:21
FROGGS joined
18:22
kjs__ left
|
|||
TimToady | m: say grep-index(/a/, <a b c d>) | 18:22 | |
camelia | rakudo-moar 57a7f6: OUTPUT«(0)» | ||
TimToady | m: say grep-index(/b/, <a b c d>) | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(1)» | ||
TimToady | helps to have the args in the right order too | 18:23 | |
but yeah, we need to audit all the * slurpies to see which ones still make sense | |||
18:23
tokuhiro_ joined
|
|||
TimToady | m: [max] rand xx 65536 | 18:24 | |
camelia | rakudo-moar 57a7f6: OUTPUT«Too many arguments in flattening array. in block <unit> at /tmp/n4wjZmA55x:1» | ||
TimToady | related to that problem too | 18:25 | |
skids | IIRC grep-index got changed but none of its relatives did, for some reason. | ||
TimToady | I changed a bunch of them to **, and things blew up real fast | ||
but we should probably establing a one-arg slurpy before deciding on those, so we don't keep repeating the one-arg boilerplate | 18:27 | ||
skids | gist.github.com/skids/4f6ff2e1c1e3b6855773 # old gist that got me most of the way there on things other than map() | ||
dalek | ast: 6bda03d | (Stefan Seifert)++ | S03-metaops/cross.t: Test X with more than 3 dimensions and with lazy secondaries |
||
kudo/nom: 57340b4 | (Stefan Seifert)++ | src/core/List.pm: Fix X with more than 3 dimensions |
|||
kudo/nom: 56634c5 | (Stefan Seifert)++ | src/core/List.pm: Fix X with lazy second argument |
|||
TimToady | after thinking about that all weekend off and on, I've been leaning toward using *|args for one-arg binding | ||
18:28
tokuhiro_ left
|
|||
pippo | TimToady: Yes it helps. TY. | 18:29 | |
skids | Would there also be a "one-arg-plus-array-slurpy"? Or just stick with two candidates? | 18:31 | |
TimToady | don't understand the question... | 18:32 | |
timotimo | o/ | 18:33 | |
jnthn: you got the "10x as long as before glr" to "1/4th of 10x as long"? so basically "2.5x as long"? | |||
skids | I'm assuming *|args would do the checks and convert to (a,) if needed, but you'd still need to nextwith into your **@ candidate? | ||
TimToady | *|args would replece **@args | 18:34 | |
*place | |||
skids | Ah. Ok. It didn't look arrayish is all. | ||
TimToady | that's the non-caching form, we'd also maybe allow *|@args to cache it | 18:35 | |
nine | m: constant @t = [\+] (1..5); say ((0,|@t) Z^.. @t).perl; | 18:37 | |
camelia | rakudo-moar 57a7f6: OUTPUT«(0^..1, 1^..3, 3^..6, 6^..10, 10^..15).Seq» | ||
nine | TimToady: is this correct? ^^^ | ||
lizmat | good *, #perl6! | 18:38 | |
yoleaux | 15:47Z <FROGGS> lizmat: I've merged the cu_load branch, we should perhaps focus now on getting precomp working again | ||
lizmat | FROGGS: will do | ||
skids | TimToady: that makes sense. | 18:39 | |
dha | hi lizmat | 18:40 | |
[Coke] | TimToady: are you proposing that go in the september release? | ||
lizmat | TimToady++ # *|args to automatically make 1 arg rule part of the language | ||
dha o/ | 18:41 | ||
moritz | m: constant @t = [\+] (0..5); say @t Z^.. @t[1..*]).perl; | ||
camelia | rakudo-moar 57a7f6: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XiNTOQkbMFUnexpected closing bracketat /tmp/XiNTOQkbMF:1------> 3t @t = [\+] (0..5); say @t Z^.. @t[1..*]7⏏5).perl;» | ||
moritz | m: constant @t = [\+] (0..5); say (@t Z^.. @t[1..*]).perl; | ||
camelia | rakudo-moar 57a7f6: OUTPUT«(0^..1, 1^..3, 3^..6, 6^..10, 10^..15).Seq» | ||
moritz | nine: both look correct to me | 18:42 | |
nine | moritz: ok, then that's another ticket we can close :) | ||
18:43
aindilis left,
aindilis joined
|
|||
dha | Oh, I should take C<state> out of WANTED | 18:44 | |
lizmat left a comment with gist.github.com/dha/8009c28d7bf2d1ca8875 | |||
moritz broke twitter | |||
dha | ah. | ||
TimToady | [Coke]: yes, but won't break anything | ||
18:45
smls joined
|
|||
dha | My understanding about the scope of C<state> wrt access, at least, is that it's' the same as C<my> | 18:45 | |
smls | m: "Copy files and folders" ~~ /$<verb>=[\w+] " " [$<pred>=[\w+]]+ % " and "/; say $<verb>; say $<pred>; say $<verb> X @<pred>; | ||
camelia | rakudo-moar 57a7f6: OUTPUT«「Copy」[「files」 「folders」]()» | ||
smls | ^^ weird issue with X | ||
TimToady | skids: I mean, you'd use *| in the same spot you'd use **, not that it replaces it in the language | ||
smls | used to work pre-GLR | ||
skids | (Perl6... where you have reasons other than a language barrier to feel stupid about not understanding discreet mathemeticians.) | ||
dha | But it maintains the contents of the variable similarly to a global. But there may be some nuances that need explication. | 18:46 | |
skids | TimToady: ack, of course. | ||
smls | m: say 4 X [5, 6] | ||
camelia | rakudo-moar 57a7f6: OUTPUT«((4 5) (4 6))» | ||
dalek | c: a0163f7 | (David H. Adler)++ | WANTED: removed C<state> from WANTED |
18:47 | |
TimToady | dha: more like it's an implict 'my' in the outer lexical scope | ||
smls | i.e. the X metaop works fine when called as Int X Array-of-Int, but produces an empty list when called as Match X Array-of-Matches | 18:48 | |
that's a bug, right? | |||
timotimo is currently building a newer rakudo for the benchmark run | 18:49 | ||
smls | s/empty list/empty Seq/ | ||
dha | TimToady - I will happily let people make that clear if they think it's necessary. :-) | ||
dalek | kudo/nom: a9407ef | FROGGS++ | src/core/CompUnitRepo.pm: fix handling of filename in require/use, ugexe++ |
18:50 | |
kudo/nom: 694cebf | FROGGS++ | src/core/CompUnitRepo.pm: include @*INC in error message of failed use/require |
|||
18:51
khw left
|
|||
nine | What do I do with a ticket like this? rt.perl.org/Public/Bug/Display.html?id=117403 I've re-benchmarked and it seems fine. | 18:51 | |
smls | Oh wait, it works if called as ($<verb>,) X @<pred>; | ||
18:51
khw joined
|
|||
smls | just a case of unexpected single-arg rule consequences then... :( | 18:52 | |
nine | smls: a Match is Capture. Capture.list returns () if it doesn't contain positionals. | ||
smls | yeah, I see that now | 18:53 | |
It's just that $<verb> looks very much like an item | |||
and pre-GLR, X treated it that way | |||
masak sent a long email back to guru99 explaining why they're not getting a link | 18:55 | ||
moritz | did I miss some drama on p6u? | ||
timotimo | oh? | ||
masak | no, I just got some semi-directed spam from them. | 18:56 | |
moritz | timotimo: I just guessed what masak++'s comment might be about | ||
18:56
raiph joined
|
|||
masak | (and so did |Tux| and [Coke], it seems) | 18:56 | |
18:57
telex left
18:58
telex joined
|
|||
[Coke] | masak: turns out that was linked in spam that contained guru99 links. | 18:58 | |
18:58
kjs__ joined
|
|||
masak | [Coke]: what was linked in spam that contained guru99 links? | 18:59 | |
moritz | nine: close it | ||
nine | moritz: done | 19:00 | |
cdc | m: say ++$ for ^2 | 19:01 | |
camelia | rakudo-moar 56634c: OUTPUT«12» | ||
cdc | m: say ++$; say ++$ | ||
camelia | rakudo-moar 56634c: OUTPUT«11» | ||
moritz | nine++ # ten now :-) | ||
masak | moritz: here's his email and my reply. gist.github.com/masak/d967a1749a44f85e6d29 | ||
I tried to stay polite, but still get the point across that his course is very, very bad. | |||
nine | There are now 5 open tickets tagged [GLR] | 19:02 | |
cdc | Hello #perl6, I don't understand why «m: say ++$; say ++$» doesn't print «m: 12». Please, could you help? | ||
[Coke] sees +is 1/128, (1/128).perl.EVAL, '(1/128).perl.EVAL round trips with sufficient accuracy'; | 19:03 | ||
and wonders, isn't there an is-idemp-mumble function? | |||
cdc: state variables need a sub. | |||
bare $ is implicitly a state var. | |||
19:03
telex left
|
|||
[Coke] | m: my $a; say ++$a; say ++$a; | 19:04 | |
camelia | rakudo-moar 56634c: OUTPUT«12» | ||
masak | I don't think state variables need a sub. | ||
19:04
telex joined
|
|||
masak | m: say ++$ for ^5 | 19:04 | |
camelia | rakudo-moar 56634c: OUTPUT«12345» | ||
TimToady | anonymous variables are always considered unique | ||
19:04
telex left
|
|||
masak | m: say ++(state $) for ^5 | 19:04 | |
camelia | rakudo-moar 56634c: OUTPUT«12345» | 19:05 | |
masak | look ma, no sub | ||
[Coke] | masak, TimToady: I stand corrected. | ||
cdc | m: { say ++$; say ++$ } for ^5 | ||
camelia | rakudo-moar 56634c: OUTPUT«1122334455» | ||
19:05
darutoko left
|
|||
masak | m: say ++$ andthen say ++$ for ^5 | 19:05 | |
camelia | rakudo-moar 56634c: OUTPUT«1122334455» | ||
lizmat | cdc: that creates 2 unnamed state variables | ||
cdc | ohh | 19:06 | |
TimToady | cdc: that's just like saying ++(state $foo), ++(state $bar) | ||
[Coke] wonders where his brain damage there came from. huh. | |||
19:06
telex joined
|
|||
lizmat | m: my $c = { state $a; $a++ }; say $c() for ^10 # don't need a sub | 19:06 | |
camelia | rakudo-moar 56634c: OUTPUT«0123456789» | ||
[Coke] blames $dayjob, a convenient scapegoat. | |||
cdc | ok, thanks! :) | ||
lizmat | [Coke]: scapegoat accepted :-) | ||
masak | I find there are often a lot of confusion around the term "anonymous". | ||
19:07
khw left
|
|||
masak | for example, people tend to interchangeably use "lambda", "closure", and "anonymous function". | 19:07 | |
skids | masak: there's probably a name for that. :-) | 19:08 | |
timotimo | lomsure | ||
cdc | dha: maybe this point irclog.perlgeek.de/perl6/2015-09-14#i_11216761 should be added to your gist. | ||
masak | and really, anonymous functions are rather unromantic when it comes down to it. they are functions that weren't given a name. a-nonymous, see? | ||
timotimo | masak: more like a non-ymous sub? | ||
masak | it's funny that we are so attached to the idea that functions must have a name, at least by default. | ||
moritz | and they don't even need to be closures, in the stricter sense | ||
masak | we don't go all crazy about anonymous arrays or anonymous integer literals. | 19:09 | |
timotimo | aye, you can have a language that doesn't do closure semantics properly | ||
have fun with that! :) | |||
dha | Hm. | ||
moritz | just imagine you growing up, and your parents didn't even bother to give you a name | ||
masak | timotimo: you mean like Rakudo in 2008? :P | ||
cdc .oO( where the streets have no name ) | |||
moritz | we should care more for our subs. | ||
timotimo | visit_2d_indices_cross 57633/s 26543/s 5370/s | 19:10 | |
1.0x 2.2x 10.7x | |||
19:10
FROGGS[mobile] left
|
|||
timotimo | ugh, so unreadable | 19:10 | |
dalek | kudo/nom: 65d33be | lizmat++ | src/core/IO/Path.pm: Make "foo".IO.lines/words($limit) work |
||
masak | just some anonymous statistics :P | ||
dha | Actually, I think the last example I give does use C<$> outside a sub. So I could certainly mention that. Thanks. | ||
jnthn | timotimo: What do the numnbers mean? :) | 19:11 | |
timotimo | the leftmost is 2015.07, the one in the middle is very recent, the one to the right is from earlier today | ||
raiph | dha: commented on your state var gist | ||
pink_mist | timotimo: so it's middle-endian sorted? :P | 19:12 | |
timotimo | you may like this one: | ||
raiph | dha: ah, looks like you're covering the same ground here on #perl6 | ||
timotimo | while_push_join 81485/s 447675/s 435981/s | ||
5.5x 1.0x 1.0x | |||
pink_mist: indeed! | |||
19:12
khw joined
|
|||
jnthn | timotimo: ooh, 5.5x faster than pre-GLR, iiuc? | 19:13 | |
19:13
telex left
|
|||
timotimo | no | 19:13 | |
oh | |||
yes, you are right | |||
i'd have written "used to take 5.5x longer" | |||
on the other hand, almost all "for_" microbenchmarks are between 2.5x and 8.5x slower now compared to before GLR | 19:14 | ||
19:14
telex joined
|
|||
timotimo | most probably it's not doing the for-to-loop optimization correctly | 19:14 | |
jnthn | If they use ranges, then yeah, probably that | 19:15 | |
timotimo | uh | ||
the ast for that looks really weird | |||
extremely different compared to what it used to be in any case | 19:16 | ||
creates a for-list_* local var and binds to that | |||
github.com/japhb/perl6-bench/blob/...ks.pl#L143 - this one has slowed down by a factor of 2.2 | 19:17 | ||
19:17
colomon left
|
|||
nine | timotimo: the for-list was my changed. Needed to make for $item loop only once while $item.map loops over $item's elements | 19:17 | |
timotimo | but loop_empty and postwhile_nil have both improved by 4.8x and 3.8x respectively | ||
ah | |||
19:18
larion left,
dwarring joined
|
|||
timotimo | nine: now all i've got to do is teach the optimizer about this new layout again :P | 19:18 | |
jnthn | rt.perl.org/Ticket/Display.html?id=125978 seems stable locally | ||
Perhaps thanks to my invocation race fixes | |||
nine | timotimo: github.com/rakudo/rakudo/commit/7aee0acfd | 19:19 | |
jnthn | cdc: Maybe you could test ^^ on latest | ||
lizmat | jnthn: I haven't seen any async related test fails in the last 3 spectest runs that I did (after pulling about an hour ago) | ||
jnthn | lizmat: nice :) | ||
timotimo | nine: the problem is that the qast tree doesn't have a link upwards, so i'll probably have to special case vars called for-list_.* so that they get kept around for a bit | ||
19:20
kjs__ left,
khw left
|
|||
timotimo | jnthn: seems like that patch made a whole lot of things a whole lot better. i'm pretty glad i pointed you at the code-gen quirk, in that case :D | 19:20 | |
19:20
telex left
|
|||
dha | raiph - yes, some of your concerns are being discussed. :-) | 19:20 | |
19:21
telex joined
|
|||
jnthn | timotimo: Yes :D | 19:21 | |
cdc | jnthn: OK, I'll give it a try. Thanks! | ||
masak | jnthn: you fixed the closure thing? good going! | 19:22 | |
jnthn++ | |||
19:24
domidumont left
|
|||
jnthn | rt.perl.org/Ticket/Display.html?id=125705 may also be better now, but I'm meant to be writing slides, not looking at RT :) | 19:25 | |
19:25
tokuhiro_ joined
19:26
braintwist joined
|
|||
lizmat | looking at IO::Handle.lines, and "nqp::p6box_s(nqp::readlinefh($!PIO)).chomp" | 19:27 | |
this is what pull-one returns. I wonder whether the boxing is necessary... | |||
19:28
khw joined
|
|||
timotimo | to call .chomp on it, surely it'd be necessary? | 19:28 | |
FROGGS | to call a method, yes, I think so | ||
lizmat | ah, ok | ||
braintwist | hi | ||
timotimo | nine: do you have a better idea, ooc? | ||
FROGGS | hi braintwist | ||
lizmat | but the case without chomp also does a box | ||
braintwist | I was wondering about where I can read about variables built-in in perl6 | ||
FROGGS | lizmat: and that boxed thing will be returned? | ||
braintwist | such as $*DISTRO and $*USER | 19:29 | |
jnthn | lizmat: If you don't put it in then the . will force it anyway | ||
lizmat | yeah, by pull-one | ||
braintwist | to see what options they have | ||
nine | This is a curious one: | ||
lizmat | now, if it is not cached, it doesn't need to be boxed, I would think | ||
nine | m: [("a", "b"), ("a", "b")] >>,<< |<a a>; | ||
braintwist | like $*DISTRO.name | ||
camelia | rakudo-moar 694ceb: OUTPUT«Lists on either side of non-dwimmy hyperop of infix:<,> are not of the same lengthleft: 2 elements, right: 1 elements in block <unit> at /tmp/imbqG9AwZD:1» | ||
19:29
telex left
|
|||
nine | Is this really a bug? ^^^ | 19:29 | |
19:29
telex joined
19:30
tokuhiro_ left
|
|||
nine | Seems so on the first glance, but HYPER is actually recursive. So it ends up calling HYPER(infix:<,>, ("a", "b"), "a") which then fails | 19:30 | |
timotimo | oh, that's curious | ||
in that case we may want to give a more helpful error message | 19:31 | ||
i.e. point out that we're recursively into the hyper | |||
rather than at the outermost level | |||
perhaps it'd even be enough to say "non-dwimmy recursive hyperop"? | |||
though mentioning its recursiveness like that seems to point out there's non-recursive hyperops, too | 19:32 | ||
which isn't false | |||
FROGGS | braintwist: design.perl6.org/S28.html#SPECIAL_V...E_IN_DEPTH | ||
braintwist | FROGGS: thanks I will look at that :D | 19:33 | |
19:33
smls left
|
|||
braintwist | FROGGS: is there a way to see whats "fields" are on the different variables ? | 19:34 | |
lizmat | jnthn: but I was thinking that the iterator need not return boxed strings at all | ||
jnthn | lizmat: True. :) | 19:35 | |
timotimo | braintwist: you can grab methods via .^methods | ||
lizmat | especially in a situation with for ....lines -> $line { .... } | ||
jnthn | Though note it's .chomp that forces the boxing here | ||
braintwist | timotimo: I am a little new :D | ||
timotimo | don't worry | ||
jnthn | lizmat: I've been podering adding an nqp op that gives you back something already chump | ||
timotimo | m: say "hello".^methods | ||
camelia | rakudo-moar 694ceb: OUTPUT«(BUILD Int Num chomp chop pred succ match ords samecase samespace trim-leading trim-trailing trim encode NFC NFD NFKC NFKD wordcase trans indent codes chars uc lc tc tclc flip ord WHY WHICH Bool Str Stringy DUMP ACCEPTS Numeric gist perl comb subst-mutate …» | ||
lizmat | jnthn: that's just because we don't have an nqp::chomp :-( | 19:36 | |
jnthn | lizmat: Nor should we | ||
lizmat | because ? | ||
19:36
telex left
|
|||
jnthn | lizmat: We should have an I/O level op so it can build the string correct in the first place *and* do so with the same line separator configured on the file handle. | 19:36 | |
19:36
rindolf left
19:37
telex joined
|
|||
jnthn | lizmat: We surely have a bug at the moment 'cus we .chomp off newlines unconditionally, even if the separator is something else, no? | 19:37 | |
19:37
][Sno][ joined
|
|||
lizmat | afaik, yes... | 19:37 | |
jnthn | But if we get that bit right then we can nqp::readlinechompfh($!PIO) | 19:38 | |
And we done | |||
lizmat | yup | 19:39 | |
19:39
[Sno] left
|
|||
dha | Ok, have updated the C<state> docs to address the issues noted. Anything else? gist.github.com/dha/8009c28d7bf2d1ca8875 | 19:39 | |
jdv79 | zostay: IO::Socket::INET seems a bit too specific | 19:40 | |
.tell zostay IO::Socket::INET seems a bit too specific | |||
yoleaux | jdv79: I'll pass your message to zostay. | ||
ab5tract | dha: it might be more fun to do ++$ and $++ | ||
19:41
rindolf joined
|
|||
ab5tract | but these are things I can also push changes to | 19:41 | |
dha | Yes, yes it might. :-) | ||
I'm actually already ready to push these changes if no one has any further comments. | 19:42 | ||
FROGGS | m: say $*DISTRO.^methods; say $*DISTRO.^attributes».name | ||
camelia | rakudo-moar 694ceb: OUTPUT«(BUILD cur-sep Str gist <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon>)($!release $!is-win $!path-sep $!name $!auth $!version $!signature $!desc)» | ||
FROGGS | braintwist: ^^ | ||
[Coke] | t/spec/S32-io/pipe.t - Failed tests: 11-13 | ||
ab5tract | dha: do it! | ||
FROGGS | [Coke]: yes, known | ||
flussence | really stupid way to get a list of all predefined names in perl6: run `script out.script`; start a repl; hold Tab until it cycles back to "A"; exit repl and shell; `strings out.script` | ||
timotimo | haha | ||
does it give you dynamic variables, too? | |||
[Coke] | FROGGS: then we should fudge them and open a ticket, non? | ||
timotimo | i don't know if there's a way to introspect dynamic variables | ||
FROGGS | [Coke]: I dunno how to fix it yet, and what the result is that we want | ||
flussence | timotimo: looks like it doesn't :( | 19:43 | |
FROGGS | [Coke]: I'd prefer a fix tbh | ||
dalek | c: 5ef883b | (David H. Adler)++ | lib/Language/variables.pod: Revised C<state> docs to reflect #perl6 comments |
||
raiph | dha: it seems you've only addressed 1 of the 3 points I made in my earlier comment to your gist | ||
lizmat | commute to room& | ||
dha | That is possible. :-/ | ||
19:43
lizmat left
|
|||
[Coke] | if they're still broke the next time I check, I'll ticket and fudge them. | 19:44 | |
dha | Actually, I think I got two of them. I may be wrong, however. | ||
raiph | dha++ # for awesome combination of persistence, humor, diligence, patience, at just the right time (run up to 6.0) | 19:45 | |
timotimo | nine: it looks like we're generating a Want for for loops that has the exact same subtree in both the "want value" and "want no value" cases | ||
19:45
telex left
19:46
telex joined
|
|||
nine | timotimo: do not assume that I knew what I did there. | 19:46 | |
timotimo | :D | ||
can you fix it and see if it breaks things? | |||
dalek | kudo/nom: 99ee82c | (Stefan Seifert)++ | src/core/ (2 files): Point out HYPER's recursive behavior in NonDWIM message if relevant |
||
FROGGS | nine: you can't use that excuse any longer :o) | ||
dha | "I go where I will and I do what I can" :-) | ||
masak | dha++ # documenting | ||
dha | I need to see that movie again. | ||
timotimo | nine: that makes hypering a tiny bit more expensive for the common case; perhaps you could instead when throwing the error check the caller's frame name if it's HYPER? | 19:47 | |
19:48
lizmat joined
|
|||
raiph | dha: I'm pretty sure a dummy placeholder in a list is not a state variable and it seems odd to me to suggest so | 19:49 | |
dha: hmm, but maybe it is, hmm | |||
dha | Right. I'm trying to remember where I got that from. | ||
timotimo | you mean in (1, 2, $, 5)? | ||
m: say (1, 2, $, 5)[2] | |||
camelia | rakudo-moar 694ceb: OUTPUT«(Any)» | ||
dha | timotimo - I think that's what we're talking about. | ||
timotimo | m: say (1, 2, $, 5)[2].VAR.name | ||
camelia | rakudo-moar 694ceb: OUTPUT«$» | ||
timotimo | seems to be a state variable there | 19:50 | |
but it may make a difference if the list is used for assignment | |||
dha | so, should I just remove the "dummy variable" comment? | ||
timotimo | i believe you can use a * instead of a $ for such a case | ||
19:51
][Sno][ left
|
|||
dha | I think it's just confusing in any case. I'll remove. | 19:51 | |
dalek | c: d72d26c | (David H. Adler)++ | lib/Language/variables.pod: Tweaks to C<state> docs |
19:52 | |
dha | Ok, I'm giving up on editing the gist over and over again. Feel free to look at the entry in the doc directory to see if my changes are acceptable. | ||
braintwist | I have a question .^methods is nice, but what does the ^ mean ? | 19:53 | |
timotimo | braintwist: "call on the meta-object" | 19:54 | |
the ^ elevates your method onto the meta-level, so to speak | |||
your method call* | |||
braintwist | timotimo: thanks. | ||
flussence | $a.^foo is a shortcut for $a.HOW.foo($a), where .HOW is the meta-object stuff attached to whatever you're looking at: | ||
m: say Int.HOW.^name | 19:55 | ||
[Coke] | search is broken on docs.perl6.org | ||
camelia | rakudo-moar 65d33b: OUTPUT«Perl6::Metamodel::ClassHOW» | ||
braintwist | it seems logical, not that I had thought about it | ||
19:55
rindolf left
|
|||
dha | [Coke] - it's always broken. :-| | 19:55 | |
[Coke] | looks like source is an array of objects that is NOT comma separated. | ||
dha: it's SUPER broken relative to previous broken. | |||
[Coke] sees if he has commit bits on this. | 19:56 | ||
dha | YAY! | ||
you should. I think *I* do. | |||
19:57
Peter_R joined
|
|||
FROGGS | braintwist: we try to get the semantics in a shape where you dont have to think about it all the time | 19:57 | |
that's why the look of operators and such matter so much | |||
[Coke] | oh, right, this is slow. | ||
braintwist | FROGGS: yes consistency is a good thing, | ||
timotimo | who wants to look at this nugget: compared to split_string_regex (which has slowed down to 1.4x since GLR), split_string_constant has become a whooping 7x slower! | 19:58 | |
braintwist | ^ is also used for exponentiation so to "raise" something seems natural :D | ||
timotimo | and any_equals has become 2.5x slower | ||
19:59
telex left
|
|||
braintwist | ^^ although I dont know about perl6 but in other languages. | 19:59 | |
FROGGS | braintwist: we use ** here | ||
timotimo | in perl6 it's actually ** | ||
19:59
telex joined,
rindolf joined
|
|||
FROGGS | braintwist: though you can construct ranges by doing: ^10 | 20:00 | |
20:00
kaare_ left
|
|||
TimToady | m: say 42 ^ "red" | 20:00 | |
camelia | rakudo-moar 65d33b: OUTPUT«one(42, red)» | ||
20:00
telex left
|
|||
FROGGS | m: say ^10 | 20:00 | |
camelia | rakudo-moar 65d33b: OUTPUT«0..^10» | ||
FROGGS | m: say (^10).list | ||
camelia | rakudo-moar 65d33b: OUTPUT«(0 1 2 3 4 5 6 7 8 9)» | ||
FROGGS | which means 'up to' | ||
(but not including) | |||
timotimo | hm | ||
^ kind of looks like a fork where either the left or right path can be chosen | |||
so it makes a surprising amount of sense to construct a "one" junction from that | 20:01 | ||
FROGGS | clearly foo.^bar should call up to but not including the meta object :P | ||
timotimo | FROGGS: all methods that come lexicographically before "bar" | ||
FROGGS | hehe | ||
braintwist | FROGGS: python uses ** as well I think | ||
TimToady | even Fortran uses ** | ||
20:02
_mg_ joined
|
|||
braintwist | I think their mnemonic is that it is as multiply twice... | 20:02 | |
kind of makes sense. | |||
20:02
telex joined
|
|||
FROGGS | that reminds me that I should put Fortran NativeCall support on my 5 year agenda :D | 20:02 | |
masak | they've been talking about introducing infix:<**> in JavaScript ES7 as well. | 20:03 | |
but last I heard, they had precedence troubles. | |||
FROGGS | masak: I guess that are the consequences when your grammar isnt very strict | ||
masak | m: my $x = 2; say -$x ** 2 | ||
camelia | rakudo-moar 65d33b: OUTPUT«-4» | ||
masak | that one is always a bit problematic, no matter how you slice it. | 20:04 | |
FROGGS | true | ||
same with ^10 | |||
and methods calls | |||
[Coke] installs a version of perl6 post-glr and sees if htmlify gets magically faster. | |||
masak | well, people have inconsistent expectations about pre- and postfixes and their precedence | 20:05 | |
timotimo | we could go the non-associating operator route and just throw an exception if we ever see either way without parenthesis | ||
masak | and aren't usually aware until several small snippets are put in front of them, and they have to come up with a consistent behavior | ||
timotimo | ah | ||
masak | for example, I really like how -$n.abs works | ||
timotimo | but it's so easy! | ||
for example: | |||
20:06
kjs__ joined
|
|||
timotimo | ^10.pick | 20:06 | |
it's obvious that you want to call the pick method on an array-y thing | |||
^10.rand | |||
it's obvious that you want to call the rand method on a number-y thing | |||
TimToady | m: ^10.pick | ||
camelia | rakudo-moar 65d33b: OUTPUT«Potential difficulties: Precedence of ^ is looser than method call; please parenthesize at /tmp/lBVrn0ZSL0:1 ------> 3^107⏏5.pickWARNINGS:Useless use of "^" in expression "^10.pick" in sink context (line 1)» | ||
dalek | kudo/nom: 87a74dc | (Stefan Seifert)++ | src/core/metaops.pm: Get rid of HYPER runtime cost for recursion hint Suggested by timotimo++ |
||
masak | timotimo: yes, good example. | ||
timotimo | nine: cool, thanks! | ||
20:07
dha left
20:09
brrt joined
20:10
AlexDaniel joined
|
|||
timotimo | i've added two microbenchmarks that remove the flat(...) around the X operator and instead of -> $i, $j they to -> ($i, $j) | 20:13 | |
and then we'll see how good that works | |||
20:13
espadrine joined
20:14
PerlJam joined
|
|||
timotimo | nine: as ven comments, perhaps the use of callframe is problematic there; have you tried timing both implementations? | 20:18 | |
20:19
rurban joined
20:20
Humbedooh joined
|
|||
[Coke] zzzzzzzzzzzzzz | 20:20 | ||
20:20
Humbedooh left,
Humbedooh joined
|
|||
timotimo | gnite coke :) | 20:21 | |
[Coke] was waiting for htmlify to come back. | |||
timotimo | did it? | ||
and did it do it faster than it used to? | |||
[Coke] | would anyone mind if I updated the URLS so it didn't require being in docroot to run? | ||
timotimo: no clue. it's unusably slow atm. | |||
20:22
bronco_creek joined
20:23
telex left,
pmurias joined
|
|||
[Coke] | I won't bother testing it pre GLR, will just make it faster. | 20:23 | |
nine | timotimo: I have no idea about the callframe thing. I'm out of my depths there. | 20:24 | |
20:24
telex joined
|
|||
timotimo | right | 20:25 | |
nine | timotimo: regarding the for Want: the code in Actions.nqp clearly generates two different subtrees. One calling .eager and one calling .sink. Somehow both branches end up calling .sink. However looking at the dump for "do for 1 {}" the eager reappears. | ||
timotimo | at least the optimizer part that does block inlining probably says "callframe? nope nope nope nope!" | ||
bronco_creek | I'm having trouble install modules with panda on the 2015.06 star release. Always fails with "no such file or directory" when it gets to the test phase. Any suggestions? | ||
yoleaux | 31 Aug 2015 21:46Z <japhb> bronco_creek: Years ago I came across a Santana album in which the liner notes consisted of a complex infographic of the changing band lineup, just so fans could get it straight. | ||
[Coke] opens github.com/perl6/doc/issues/125 | 20:26 | ||
FROGGS | m: my num32 $n = 42.Num; say $n # uff, I forgot that this is still with us | 20:28 | |
camelia | rakudo-moar 87a74d: OUTPUT«0» | ||
FROGGS | bronco_creek: it perhaps makes more sense to build latest rakudo with panda via rakudobrew | ||
bronco_creek: and then install Task::Star | 20:29 | ||
20:29
xfix left
20:31
colomon joined
|
|||
bronco_creek | FROGGS: thx, I'll try that. Do you know whether Task::Star will get me XML? | 20:31 | |
20:33
rindolf left
|
|||
FROGGS | bronco_creek: look: github.com/tadzik/Task-Star/blob/m...TA.info#L8 | 20:33 | |
nine | timotimo: the callframe version seems fix the ~ 5 % regression of the previous version | ||
timotimo | oh? | 20:34 | |
20:34
larion joined
|
|||
nine | So either callframe is not actually a problem, or our optimizer is not smart enough anyway to optimize HYPER as it is | 20:34 | |
20:36
_mg_ left
20:37
espadrine left
|
|||
[Coke] | do we have the equivalent of "python -m SimpleHTTPServer" ? | 20:38 | |
timotimo | hehehe | ||
[Coke]: you mean "serve stuff from the local directory"? | |||
i don't think we do | |||
jnthn | 'night, #perl6 | ||
timotimo | gnite jnthn! | ||
colomon | o/ | 20:39 | |
20:40
patrickz left
|
|||
brrt | good night jnthn :-) | 20:42 | |
psch | the light are all wrong! /o\ | 20:44 | |
and pushing more buttons isn't helping | |||
[Coke] | who is running the scripts to generate docs.perl6.org? | 20:45 | |
(trying to figure out what version of perl6 is being used) | |||
brrt | moritz perhaps? | 20:46 | |
[Coke] | pretty sure a glr change broke htmlify. testing a fix.. | 20:47 | |
(it's faster to run the moarvm spectests!) | 20:48 | ||
nine | [Coke]: didn't he report a htmlify speedup due to the glr yesterday? | 20:49 | |
timotimo | well, are you on newest htmlify? perhaps things are still in a glr/ branch? | ||
nine | I certainly fixes Inline::Python's tests yesterday for htmlify on GLR | 20:50 | |
20:51
larion left
|
|||
timotimo | baumkuchenspitzen <3 | 20:51 | |
FROGGS | m: say &infix:<+>.candidates>>.gist | 20:52 | |
camelia | rakudo-moar 87a74d: OUTPUT«No appropriate parametric role variant available for 'Rational' in any specialize at gen/moar/m-Metamodel.nqp:2497 in any compose at gen/moar/m-Metamodel.nqp:2807 in any make_pun at gen/moar/m-Metamodel.nqp:1644 in any find_method at gen/mo…» | ||
timotimo | ah, interestengi | ||
because Rational takes two type parameters | |||
bronco_creek | FROGGS: rakudobrew won't help me on Windows, I guess. Also, it look like Task:Star will only get me XML:Writer. I have a script from a few months back that uses other features of XML. | 20:53 | |
FROGGS | bronco_creek: ohh | ||
timotimo | oh | ||
FROGGS | :S | ||
timotimo | just last night someone visited who was porting rakudobrew to windows | ||
github.com/patzim/rakudobrew | 20:54 | ||
20:54
larion joined
|
|||
[Coke] | nine: it could be faster. it's still really slow. | 20:54 | |
FROGGS | bronco_creek: it seems we are getting a release this Thursday... I can then create a star release and a windows msi this weekend or early next week | 20:55 | |
[Coke] | FROGGS: I hopefully can manage that, aye. | ||
FROGGS | [Coke]: we'll be here to help | ||
20:55
skids left
|
|||
bronco_creek | I'll have to find another approach untill we have a 6.0 msi. New Year's eve? | 20:55 | |
20:56
raiph left
|
|||
timotimo | whoa, a release? | 20:56 | |
bronco_creek | FROGGS: Oops, missed your last post. | ||
timotimo | was september meant to be the beta release? | ||
[Coke] | timotimo: just the normal september release | 20:57 | |
TimToady can call it whatever he wants. :) | |||
FROGGS | [Coke] / timotimo: the release TimToady is talking about is roast, mind | 20:58 | |
timotimo | ah, of course | 20:59 | |
[Coke] | well, there's 2 releases - one is the spec, one is the compiler, sure. Anyway, I'm just doing a braindead compiler release this week. | ||
FROGGS | aye | 21:00 | |
jdv79 | does perl6 have any locale support? | ||
21:01
larion left
|
|||
braintwist | wow those built-in variables can access a lot of information, that is nice. | 21:02 | |
FROGGS | gnight #perl6 | 21:03 | |
21:03
FROGGS left
|
|||
[Coke] | jdv79: for users to generate locale-specific data, or for the compiler to complain to the programmer in locale-specific ways? | 21:03 | |
(I think no both ways) | 21:04 | ||
21:05
colomon left
|
|||
jdv79 | thanks | 21:07 | |
[Coke] | perl6 htmlify.p6 --no-highlight --sparse=100 # dies with Method 'name' not found for invocant of class 'Any' | 21:08 | |
jdv79 | just wondering about sorting german numerals - came up on #perl | ||
dalek | kudo/nom: 2475abf | lizmat++ | src/core/Str.pm: Introduce internal CHOPCRLF sub Takes anything (presumably a native str) so we can chomp without a container. Temporary until we have nqp::readlinefhchomp(). |
||
kudo/nom: 1391588 | lizmat++ | src/core/IO/Handle.pm: Make IO::Handle.lines push unboxed strings |
|||
21:09
meisl joined
|
|||
psch | r: say BagHash.new(<a>) (&) <a b> | 21:10 | |
camelia | rakudo-{moar,jvm} 87a74d: OUTPUT«bag(a)» | ||
psch | r: say BagHash.new(<a c>) (&) <a b> | 21:11 | |
camelia | rakudo-{moar,jvm} 87a74d: OUTPUT«bag(a)» | ||
21:11
meisl left
|
|||
psch | r: my $kb = BagHash.new(<blood green>); say $kb ∩ <blue blood> | 21:11 | |
camelia | rakudo-jvm 87a74d: OUTPUT«java.util.ConcurrentModificationException in block <unit> at /tmp/tmpfile:1» | 21:12 | |
..rakudo-moar 87a74d: OUTPUT«bag(blood)» | |||
psch | r: my $kb = BagHash.new(<blood green>); say $kb (&) <blue blood> | ||
camelia | rakudo-moar 87a74d: OUTPUT«bag(blood)» | ||
..rakudo-jvm 87a74d: OUTPUT«java.util.ConcurrentModificationException in block <unit> at /tmp/tmpfile:1» | |||
psch | ...that just makes it worse! | ||
why is the lengths of the items in the LHS bag relevant... | |||
r: say BagHash.new(<blood green>) (&) <blue blood> | 21:13 | ||
camelia | rakudo-jvm 87a74d: OUTPUT«java.util.ConcurrentModificationException in block <unit> at /tmp/tmpfile:1» | ||
..rakudo-moar 87a74d: OUTPUT«bag(blood)» | |||
psch | r: say BagHash.new(<bloo green>) (&) <blue blood> | ||
camelia | rakudo-moar 87a74d: OUTPUT«bag()» | ||
..rakudo-jvm 87a74d: OUTPUT«java.util.ConcurrentModificationException in block <unit> at /tmp/tmpfile:1» | |||
nine | Good night, #perl6! | ||
psch | r: say BagHash.new(<bloo g>) (&) <blue bloo> | ||
camelia | rakudo-jvm 87a74d: OUTPUT«java.util.ConcurrentModificationException in block <unit> at /tmp/tmpfile:1» | 21:14 | |
..rakudo-moar 87a74d: OUTPUT«bag(bloo)» | |||
psch | g'night nine o/ | ||
jdv79 | lizmat: does CHOPCRLF differ from a chomp? | ||
lizmat | nope | 21:15 | |
but it is a sub and it takes an unboxed str | |||
21:15
pippo left
21:19
larion joined
|
|||
psch | night #perl6 | 21:22 | |
lizmat | gnight psch | ||
21:23
muraiki left
21:24
colomon joined
|
|||
dalek | kudo/nom: 29cffa2 | lizmat++ | src/core/ (2 files): Revert previous 2 commits: no speed gain after all Not sure why, but probably the extra sub call in .chomp did it. |
21:24 | |
21:26
tokuhiro_ joined
21:29
[Sno] joined
|
|||
ab5tract | .tell flussence re: the performance of Test::Corpus, I imagine a great deal of it is related to slurping a bunch of files | 21:31 | |
yoleaux | ab5tract: I'll pass your message to flussence. | ||
21:31
tokuhiro_ left
|
|||
ab5tract | .tell flussence but building a pipeline for doing concurrent processing would be very interesting as well | 21:32 | |
yoleaux | ab5tract: I'll pass your message to flussence. | ||
21:36
kjs__ left
21:37
kjs__ joined,
kjs__ left
21:41
brrt left
|
|||
[Coke] stares at some convoluted code in htmlify | 21:41 | ||
[Coke] gives up for now. | |||
21:43
patrickz joined
|
|||
patrickz | .seen tadzik | 21:44 | |
yoleaux | I saw tadzik 17:05Z in #perl6: <tadzik> nope | ||
ugexe | be careful with doing parallized testing via `>>.&test-method`. not everything can be tested out-of-order, so .map() lets you add an await if you want to turn off parallized testing | ||
timotimo | create_and_copy_2d_grid_cross_unpack -- 12241/s 3417/s | ||
FAIL 1.0x 3.6x | |||
visit_2d_indices_cross_unpack -- 30576/s 7392/s | |||
FAIL 1.0x 4.1x | |||
^- this is the work of le jnthn + the suggestion of le nine | |||
colomon | is the last column the results of their work/suggestion? | 21:46 | |
timotimo | no, it's - confusingly enough! - the one in the middle | ||
but the x is a "lower is better" figure | 21:47 | ||
and the column that says FAIL is just because before GLR, ^100 X ^100 -> ($i, $j) doesn't work | |||
here's the columns for the respective non-unpack benchmarks: | |||
1.0x 2.0x 8.4x | 21:48 | ||
1.0x 2.2x 10.9x | |||
tadzik | patrickz: sup:) | 21:52 | |
21:52
meisl joined
|
|||
meisl | hello #perl6 | 21:52 | |
yoleaux | 22 Jul 2015 08:24Z <brrt> meisl: if you want to ask questions, i'm typically available between 07:00 UTC and 15:00 UTC :-) | ||
26 Jul 2015 19:29Z <brrt> meisl: i have a (p5) initial implementation of aho-style tiling | |||
26 Jul 2015 19:32Z <brrt> meisl: check out github.com/MoarVM/MoarVM/blob/even...nerator.pl if you wish | |||
patrickz | Hey! | ||
tadzik | Hey hey | 21:53 | |
meisl | oh-wow... | ||
never had such a nice welcome - and such an immediate one | 21:54 | ||
patrickz | tadzik: github.com/tadzik/rakudobrew/blob/...obrew#L407 <- any reason for not using run('make install')? | ||
*currently removing bugs from rakudobrew on windows... | 21:55 | ||
tadzik | patrickz: possibly historical reasons | ||
patrickz | ok, I'll replace it then. | ||
tadzik | I wouldn't be surprised if rakudobrew predated run() :P | ||
Thanks! | |||
patrickz | So what do you think about keeping / removing commands? | 21:56 | |
meisl | brrt: I assume I just saw some kind of automated message (?) Anyways, I *am* interested in Aho-style tiling, will have a look. | 21:58 | |
tadzik | I don't mind removing them completely as long as they come with a proper deprecation notice | ||
masak | 'night, #perl6 | ||
patrickz | Would you prefer removing them? | ||
tadzik | And I wouldn't worry about breaking existing things like travis, people should know better than to rely on master being what they think it is | 21:59 | |
'night masak | |||
21:59
bronco_creek left
|
|||
tadzik | patrickz: I'm a bit sentimental towards them, but they probably belong in git log and nowhere else :) | 22:00 | |
patrickz | Well they match perlbrew commands pretty closely. | ||
Which is A Good Thing. | |||
tadzik | I now wonder if it's not too problematic to be named rakudo*brew* but be compatible with pl*env* | 22:01 | |
Oh perlbrew too? | |||
meisl | anyone: +yoleaux seems to be a means to "send messages to someone in the future", st she sees it when they come back here - how do I do that? | ||
patrickz | It's basically reduced redundancy vs familiarity for perlbrew/plenv users. | ||
tadzik | Which I'm all for | ||
patrickz | The old ones match perlbrew | 22:02 | |
ab5tract | meisl: use `.tell $nick` | ||
patrickz | The new ones plenv | ||
tadzik | Ah | ||
Well, it uses plenv model, not perlbrew | |||
ab5tract | meisl: use `.tell <nick> <msg>` | ||
patrickz | True. | ||
tadzik | So just the name remains problematic, kinda | ||
meisl | ab5tract: thx, that's really a nice feature | ||
22:03
hernanGOA left
|
|||
ab5tract | .tell meisl I completely agree :) | 22:03 | |
yoleaux | ab5tract: I'll pass your message to meisl. | ||
ab5tract | 'night #perl6 ! | ||
timotimo | gnite ab5tract | ||
meisl | .tell ab5tract thx again: g'nite | 22:04 | |
yoleaux | 22:03Z <ab5tract> meisl: I completely agree :) | ||
meisl: I'll pass your message to ab5tract. | |||
patrickz | *env is kinda nice because it's also present in other languages rbenv, pyenv... | ||
tadzik | Right | ||
patrickz | Nonetheless renaming the thing is painful. | ||
ab5tract | p6env is shorter :) | 22:05 | |
yoleaux | 22:04Z <meisl> ab5tract: thx again: g'nite | ||
meisl | .tell brrt oh-wow... | ||
yoleaux | meisl: I'll pass your message to brrt. | ||
tadzik | Yeah. And rakudobrew is a really good brand now :P | ||
meisl | .tell brrt never had such a nice welcome - and such an immediate one! | ||
yoleaux | meisl: I'll pass your message to brrt. | ||
timotimo | pyenv? i think you mean "virtualenv" | ||
tadzik | Bbs, detram & | ||
patrickz | pl6env would be my preference. bikeshedding ftw! | ||
ab5tract | tadzik: that's quite true. the trusted source! | ||
timotimo | which is a very python-centric naming, isn't it? | ||
meisl | .tell brrt I *am* interested in Aho-style tiling, will have a look. | 22:06 | |
ab5tract | ok, really o/ | ||
yoleaux | meisl: I'll pass your message to brrt. | ||
patrickz didn't know about virtualenv... | |||
22:06
Peter_R left
|
|||
timotimo comes from a slight python background | 22:06 | ||
patrickz | With some added complexity we could have both. | ||
meisl | anyone: I've got a "QAST-ion", re Op stringify... | 22:07 | |
timotimo | shoot | 22:08 | |
as in: go ahead with your question | 22:09 | ||
meisl | I found that you cannot just put a QAST::Op.new(:op<stringify>, ...) in your QAST tree - yields "no registered operation handler for stringify" | ||
timotimo | right | 22:10 | |
meisl | ...only if it's under a CompUnit with :hll<nqp>... | ||
timotimo | ah | ||
let's see | |||
meisl | so this op seems different from others - why? | 22:11 | |
timotimo | i've got a link for you in a second | ||
github.com/perl6/nqp/blob/master/s...ps.nqp#L95 | 22:12 | ||
extremely similar to the implementation for the jvm: github.com/perl6/nqp/blob/master/s...s.nqp#L100 | |||
github.com/perl6/nqp/blob/master/s...ps.nqp#L85 - and the one for parrot as well | 22:13 | ||
meisl | yeah, found this as well - but don't really get the difference to, say, "really native" ops like eg isstr | ||
timotimo | github.com/perl6/nqp/blob/master/s....nqp#L2394 - this goes directly to the MoarVM operation | 22:14 | |
github.com/MoarVM/MoarVM/blob/mast...plist#L389 - this is where its argument structure is defined | 22:15 | ||
github.com/MoarVM/MoarVM/blob/mast...rp.c#L2631 - and here's how moarvm implements it internally | |||
the QASTOperationsMAST entry knows what the bytecode for isstr is and can emit that properly, and it also knows what arguments it gets | 22:16 | ||
meisl | hmm thx, but I'm afraid that's a bit over my head, or "too deep down" for me right now. Could you help me with a more general explanation, like why/how that is different from other QAST::Op s which would work under whatever :hll you have? | 22:18 | |
timotimo | well, sure | 22:20 | |
it all depends on whether or not it's been defined "for you" | |||
22:20
rurban left
|
|||
timotimo | both the nqp and rakudo "Operations" file will register all of moarvm's (for example) operations for you, because wh ynot | 22:20 | |
22:21
pippo joined
|
|||
timotimo | however, you're allowed to add any more operations you want to your compiler, as long as you can compile it down to operations that are implemented by the VM you're using | 22:21 | |
tadzik | patrickz: I now wonder, how much of a pain would be to convert the plenv-like commands to perlbrew-like commands? | ||
I guess they're basically equivalent | |||
and changing the api at this stage may be easier than changing the name | |||
timotimo | excuse me for being so low-level-focused; spent too much time in moarvm :) | ||
patrickz | perlbrew has no local/shell | ||
tadzik | aqh | ||
pippo | m: @a = (1..10)list; say @a.WHAT; | 22:22 | |
camelia | rakudo-moar 29cffa: OUTPUT«5===SORRY!5=== Error while compiling /tmp/jMdlZt6JD_Variable '@a' is not declaredat /tmp/jMdlZt6JD_:1------> 3<BOL>7⏏5@a = (1..10)list; say @a.WHAT;» | ||
pippo | m: @a = (1..10).list; say @a.WHAT; | 22:23 | |
camelia | rakudo-moar 29cffa: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Arz6L5oAOhVariable '@a' is not declaredat /tmp/Arz6L5oAOh:1------> 3<BOL>7⏏5@a = (1..10).list; say @a.WHAT;» | ||
pippo | m: my @a = (1..10).list; say @a.WHAT; | ||
camelia | rakudo-moar 29cffa: OUTPUT«(Array)» | ||
meisl | timotimo: thx, and np at all :D. I'm not trying to add some new op, just use what I saw the nqp Actions/Grammar produce in my own hll | ||
pippo | @a.WHAT = list, no more? | ||
timotimo | meisl: btw, you can also generate a QAST tree inside the implementation of your custom op | 22:25 | |
let me find an example for you | |||
ah | |||
it's just above stringify, "postdec" which implements post-decrement | |||
all you have to know is you can return the return value of $qastcomp.as_mast($your_shiny_qast_tree) | |||
pippo | m: my $a = (1..10).list; say $a.WHAT; | 22:27 | |
camelia | rakudo-moar 29cffa: OUTPUT«(List)» | ||
meisl | timotimo: hmm, not really the same. I can put a QAST::Op.new(:op<postdec>, ...) in my QAST tree under a CompUnit with :hll<L> (eg), and the QAST-to-MAST goes well - but not so with stringify... | ||
patrickz | two more ideas: -keep both subcommand sets and differentiate them a little in the help ("perlbrew like commands:" ... "plenv like commands:") | 22:28 | |
timotimo | oh? | ||
meisl | yes. | ||
timotimo | let's see why that could be | ||
patrickz | - provide both a rakudobrew and a pl6env | ||
either with separate subcommand sets or that combined one | |||
22:29
telex left
|
|||
timotimo | um, i have no idea why that would turn out differently :| | 22:29 | |
22:29
telex joined
|
|||
patrickz | (separate sets is a little dangerous, rakudobrew would invisibly behave differently if a local or shell version is set) | 22:30 | |
22:30
skids joined
|
|||
pippo | m: my $a = (1); say $a.WHAT; $a.push: 2; say $a.WHAT; | 22:30 | |
camelia | rakudo-moar 29cffa: OUTPUT«(Int)Cannot call push(Int: Int); none of these signatures match: (Any:U \SELF: *@values, *%_) in block <unit> at /tmp/MHkFAsVBqk:1» | ||
pippo | m: my $a = (1); say $a.WHAT; | ||
camelia | rakudo-moar 29cffa: OUTPUT«(Int)» | ||
meisl | from github.com/perl6/nqp/blob/master/d...t.markdown I concluded (guessed) that the :hll on CompUnit is rather cosmetic - it seems it's not... | ||
pippo | m: my $a = (1,2); say $a.WHAT; | ||
camelia | rakudo-moar 29cffa: OUTPUT«(List)» | ||
pippo | m: my $a = (1,2); say $a.WHAT; $a.push: 3; | 22:31 | |
camelia | rakudo-moar 29cffa: OUTPUT«(List)Cannot call push(List: Int); none of these signatures match: (Any:U \SELF: *@values, *%_) in block <unit> at /tmp/7dnkOd9cjU:1» | ||
timotimo | oh | ||
you are right, that wants to be a more drastic explanation | |||
every compunit remembers the hll and when values move between compunits, they'll often get "hllized" | 22:32 | ||
m: use nqp; nqp::hllizefor('nqp', (1, 2, 3, 4)).WHAT.say | |||
camelia | rakudo-moar 29cffa: OUTPUT«This type cannot unbox to a native string in block <unit> at /tmp/hrI9XUHh7k:1» | ||
timotimo | m: use nqp; nqp::hllizefor((1, 2, 3, 4), 'nqp').WHAT.say | ||
camelia | rakudo-moar 29cffa: OUTPUT«(List)» | ||
timotimo | um | ||
m: use nqp; nqp::hllizefor("hello" ~~ /../, 'nqp').WHAT.say | 22:33 | ||
camelia | rakudo-moar 29cffa: OUTPUT«(Match)» | ||
meisl | it shouldn't say that? | ||
timotimo | i was expecting something nqp-ish | ||
22:33
leont left
|
|||
meisl | let's try the stringify, like ~5 | 22:33 | |
(it's on you, I don't know npq::hllizefor :) | 22:34 | ||
timotimo | hah | ||
hllizefor is only about transforming common kinds of things between HLLs | |||
there's a NQPMatch class for use inside NQP that ought to turn into a Match when hllized for perl6, for example | |||
or at least i think NQPMatch / Match have a role like that | 22:35 | ||
meisl | ah, so you were expecting NQPMatch instead of Match, right? | ||
timotimo | nope, wrong, Match and NQPMatch don't get registered for the hll config | ||
there's types for different kinds of boxing | 22:36 | ||
int, num, str, a null value (Mu vs NQPMu) | |||
it could very well be that transforming from perl6 to nqp doesn't work, but the other way around it would | |||
but camelia doesn't have a setup that'd make that easily possible to try :| | 22:37 | ||
meisl | to be clear: I'm entirely in NQP, no P6 | ||
the QAST-generating stuff and all is only NQP | |||
timotimo | right, fair enough | 22:38 | |
patrickz | MoarVM dyncall build fails with: dyncall_callf.c:90:75: error: invalid conversion from 'DCpointer {aka void*}' to 'DCstring {aka const char*}' [-fpermissive] on gcc-x64-windows. Is that a known problem? | ||
22:38
leont joined
|
|||
timotimo | if dyncall gives you problems, you can try libffi instead ... but i don't know about that problem | 22:39 | |
i *think* we've only made the errors stricter for moarvm itself, not for sub-projects | |||
meisl | but maybe that's something: you said "don't get registered for the hll config" (about classes) - but maybe QAST Op may or may not be "registered for hll config" as well? | ||
timotimo | meisl: i expect the hll set in a compunit influences what set of ops will be looked at | 22:40 | |
but humans lie, code doesn't :) | |||
and now i'll be afk for ~30 minutes | |||
meisl | timotimo: fine, I'll have to go to bed. Thx a lot for your efforts :)) | 22:41 | |
tadzik | patrickz: that seems to fragile to my liking (keeping both sets) | ||
patrickz | ok, then we have to decide :-) | ||
timotimo | you're welcome :) | ||
looking forward to seeing what your language looks like | |||
leont | It seems rakudo doesn't detect infinite recursion | 22:42 | |
meisl | hehe, rather simple. L = Lambda; g'night :) | ||
leont | (guess how I just swapped my computer to death) | 22:44 | |
patrickz | Then our options are to go for full plenv commands compatibility or a mixture of the current commands and the commands I added. First is more consistent, second is less intrusive.. | 22:45 | |
22:45
pmurias left
|
|||
dalek | kudo/nom: e11a341 | lizmat++ | src/core/IO/Handle.pm: Implement push-all for IO::Handle.lines "words".IO.lines.elems.say 20% faster "words".IO.lines(:!chomp).elems.say 35% faster my @a = "words".IO.lines; say +@a 18% faster This for a file with 235886 lines. |
22:49 | |
lizmat | my first optimization work in the new GLR world | ||
and with this I say good night to #perl6! | 22:51 | ||
22:51
meisl left
|
|||
cognominal | lizmat++ | 22:51 | |
pippo | Why I cannot push one element to a list? | 22:52 | |
m: my $a = (); $a.push: 1; | 22:53 | ||
camelia | rakudo-moar 29cffa: OUTPUT«Cannot call push(List: Int); none of these signatures match: (Any:U \SELF: *@values, *%_) in block <unit> at /tmp/CMluZIDCnB:1» | ||
pippo | ?? | ||
cognominal | m: my $a = []; $a.push: 1 | 22:54 | |
camelia | ( no output ) | ||
pippo | cognominal: but that is an array. | ||
cognominal | A list is read-only. | ||
pippo | Ah. cause of GLR? | 22:55 | |
cognominal | I think so | ||
pippo | Sadly. | 22:56 | |
cognominal: thank you. | |||
cognominal | pippo: GLR breaks things, but it seems more coherent than the world pre-GLR. | 22:57 | |
pippo | github.com/perl6/specs/blob/master...-draft.pod | ||
lizmat | m: my $a = (,); $a.push(42) | ||
camelia | rakudo-moar 29cffa: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bQyI5JcZ5JPreceding context expects a term, but found infix , insteadat /tmp/bQyI5JcZ5J:1------> 3my $a = (,7⏏5); $a.push(42)» | ||
lizmat | hmmm... | 22:58 | |
pippo | ^^ In here seems that lists are mutable and have a push method. | ||
lizmat | well, that's wrong then :-) | ||
Lists are immutable, but may contain mutable items | 22:59 | ||
S07:1 | |||
22:59
thou left
|
|||
pippo | lizmat: OK. Thank you lizmat. | 22:59 | |
flussence | .botsnack | 23:01 | |
yoleaux | :D | ||
21:31Z <ab5tract> flussence: re: the performance of Test::Corpus, I imagine a great deal of it is related to slurping a bunch of files | |||
21:32Z <ab5tract> flussence: but building a pipeline for doing concurrent processing would be very interesting as well | |||
pippo | lizmat: BTW. The error messages are a little misleading. No? | 23:02 | |
23:06
meisl joined
|
|||
flussence | .tell ab5tract I think it would help a lot if I could throw is() and the like inside of start{} blocks, and have confidence in the results coming out in a consistent-enough order. In other words, I'm doing it wrong. I'll leave that code as-is for the time being because slow beats segfaulting. | 23:06 | |
yoleaux | flussence: I'll pass your message to ab5tract. | ||
ShimmerFairy | pippo: The last error message you gave has nothing to do with .push, just with the fact that you tried to use (,) | ||
m: my $a = (,); | |||
camelia | rakudo-moar 29cffa: OUTPUT«5===SORRY!5=== Error while compiling /tmp/0eSlEh3EbJPreceding context expects a term, but found infix , insteadat /tmp/0eSlEh3EbJ:1------> 3my $a = (,7⏏5);» | ||
pippo | m: my $a = (); $a.push: 1; | 23:07 | |
camelia | rakudo-moar 29cffa: OUTPUT«Cannot call push(List: Int); none of these signatures match: (Any:U \SELF: *@values, *%_) in block <unit> at /tmp/sIaafznfwM:1» | ||
pippo | ^^ and this one? | ||
ShimmerFairy | My guess is that it inherited a push method from Any, and hasn't overridden it | 23:08 | |
23:09
spider-mario left
|
|||
patrickz | I'm off to bed. Night everyone... | 23:09 | |
meisl | timotimo: just tried :op<postdec> - and it's the same as with stringify (so I was wrong on that) - but still: how come? (take, eg, reprname - that works for any :hll) | ||
23:09
patrickz left
|
|||
meisl | .tell timotimo just tried :op<postdec> - and it's the same as with stringify (so I was wrong on that) - but still: how come? (take, eg, reprname - that works with any :hll) | 23:11 | |
yoleaux | meisl: I'll pass your message to timotimo. | ||
23:11
telex left
|
|||
cognominal | ShimmerFairy, indeed but the Any:U does not make any sense to me for a push method. | 23:11 | |
lizmat | $ 6 'my $a = (); $a.push: 42' | ||
Cannot call 'push' on an immutable 'List' | |||
23:12
telex joined
|
|||
lizmat | pippo ^^^ better ? | 23:12 | |
timotimo | meisl: i told you, home boy! you can't op this! | ||
yoleaux | 23:11Z <meisl> timotimo: just tried :op<postdec> - and it's the same as with stringify (so I was wrong on that) - but still: how come? (take, eg, reprname - that works with any :hll) | ||
timotimo | er, i mean ... | ||
cognominal | you need a concreto object | ||
timotimo | reprname is also one of those ops that are implemented by moarvm and mapped by any hll | ||
not just nqp | |||
dalek | kudo/nom: 86ddca2 | lizmat++ | src/core/List.pm: Fix LTA error on List.push/pop/unshift/shift pippo++ for pointing this out |
23:14 | |
meisl | timotimo: ay, sir. but... I don't understand a thing :) seems I need some more prep. but not now, I really have to sleep now. Big thx! | ||
timotimo | rest well! | 23:15 | |
pippo | lizmat: thank you. | ||
meisl | cu all | ||
ShimmerFairy | m: say Int.push(4, 2) | ||
camelia | rakudo-moar 29cffa: OUTPUT«Cannot modify an immutable Int in block <unit> at /tmp/aNVQxlKV9A:1» | ||
23:15
meisl left
|
|||
lizmat | really sleep& | 23:15 | |
pippo | o/ | 23:16 | |
ShimmerFairy | ^ Any.push claims this would turn into an Array, but it looks like it doesn't anymore | ||
♞ all of you :) o/ | |||
timotimo | flussence: i imagine you could use hyper to do the tests and at the end assign to a list that caches and evaluate the results in-order | 23:18 | |
pippo | good night ShimmerFairy | 23:19 | |
23:19
pippo left
|
|||
flussence | timotimo: I've tried a few approaches over the last few months, including that one, but I've been unable to produce any meaningful speedup with that code. | 23:24 | |
I do have my browser choking on a 3MB profile.html of it right now though :) | 23:25 | ||
(oww, it does not like that callgraph tab...) | |||
timotimo | the last few months, eh? | 23:27 | |
flussence | on and off, whenever I get bored and decide to fiddle with it :) | ||
timotimo | right now is a good time to try again, as that instability with regards to multi-threading was fixed today | ||
dalek | c: 958c399 | skids++ | lib/Type/ (2 files): More fixing of links. Try to get this table pod thing to DWIM. Also, avoid using the phrase "object of type Capture" in subject matter so close to en-passant "type capture"s. |
23:28 | |
23:28
tokuhiro_ joined
23:29
telex left
23:30
telex joined
|
|||
skids | .oO(maybe we should ditch "en-passant capture" for something like "type gleaning") |
23:31 | |
23:32
tokuhiro_ left
23:36
[Sno] left
23:39
larion left
23:41
Skarsnik left
|
|||
flussence | timotimo: before I go off and do that, it looks like I can rule out the file IO being slow at all - slurp accounts for 780ms of the 70+s these tests take, 97% is in Str.trans... | 23:42 | |
timotimo | oh wow | ||
ugexe | if you use hyper you wont be able to run the tests in order if its required | 23:48 | |
01.t creates some-file.csv, 02.t uses some-file.csv. A poorly designed test, but i saw it more often than id like in perl 5 | 23:49 | ||
leont | There has been a strong move away from that in p5, there are people who test for it | 23:51 | |
Test::Harness can be run in parallel & shuffle mode, that will trigger such tests pretty quickly | 23:52 | ||
flussence | oh wow... replacing .trans('A'..'Z' => ['N'..'Z', 'A'..'M']) with .trans('A..Z' => 'N..ZA..M') makes the tests pass in *one second* | ||
ugexe | prove/test::harness also has .prove for working around those problems. zef runs tests in parallel/shuffle if requested as well, but as separate processes | 23:53 | |
timotimo | flussence: not bad! | 23:54 | |
23:54
TEttinger joined
|
|||
timotimo | ugexe: if you cause the hyper's result to be collected in a list and access it in-order, like with a .map (probably after an .eager?) you'll get results in-order | 23:55 | |
you just have to put the "is" and stuff after the section that gets shuffled | |||
ugexe | timotimo: its not always the results that need to be in order | ||
01.t creates some-file.csv, 02.t uses some-file.csv | 23:56 | ||
ShimmerFairy | flussence: clearly there's something up with the "actual Range" version :P (and I wouldn't've expected Range syntax in a string to work, honestly) | ||
ugexe | i spent a good 30 hours changing Archive::Zip to *not* use files like that between tests so it could be run with shuffle/parallel | 23:57 | |
flussence | it's special-cased inside .trans, which makes me wonder what it *is* doing inside there... | ||
23:57
telex left
23:58
telex joined
|
|||
ugexe | some sort of thing like `plan` but to allow the test itself to declare the order if its required would be ideal. but then you have to use map instead of hyper unless you want 2 code paths | 23:59 |