»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
timotimo (yes, i know, i can yak all day long and not do anything; i should STFU or SUAC) 00:04
(that is: Shut Up And Code)
dalek rl6-bench/stress: 8cc7a59 | (Geoffrey Broadwell)++ | analyze:
Add documentation for --show-rates and --show-failures
00:40
rl6-bench/stress: d8b859a | (Geoffrey Broadwell)++ | timeall:
Fix copy pasto in timeall docs
rl6-bench/stress: 88d279d | (Geoffrey Broadwell)++ | analyze:
Fix undef warning in analyze when only analyzing one compiler
rl6-bench/stress: f4eca3a | (Geoffrey Broadwell)++ | analyze:
Only double space text summary output if more than one stat is being shown for each test
rl6-bench/stress: 4107f13 | (Geoffrey Broadwell)++ | bench:
Add first versions of 'stress' and 'diagnose' commands to bench
00:43
japhb OK, now I need some actual stress tests ... 00:48
timotimo please be more specific in defining "stress"? 00:50
japhb timotimo: A test that will fail to run at some scale level (not just timeout -- I'm talking segfault, signal, wrong output, that sort of thing) 00:51
timotimo oh, hmm 00:52
japhb My first thought is perhaps any flappy tests we have in roast, because those would at least get wrong output sometimes.
timotimo mhm mhm
i'm not 100% sure i can think of anything new off the top of my head 00:53
japhb Well, is there a list of said flappy tests?
timotimo S17-procasync/print.rakudo.moar 00:55
at least 00:56
i don't know what the exact flappers are
japhb OK
timotimo does this set of features also give regular benchmarks more interesting data/results/analysis? 01:00
japhb timotimo: Yes, timeall is now always collecting failure information, and can diagnose several different forms of failure (including output mismatch, if an expected output is defined for a test) 01:08
And analyze can now (at least in text mode) show the failure profile of each test as it scales 01:09
But I need some tests that actually fail to make sure I'm doing everything right. :-) 01:10
japhb is considering the value of having roast as a component, and teaching timeall to be able to run a set of tests from there. 01:11
I need a simplified harness that can parse TAP output just well enough to determine if all tests were run and OK. 01:12
tony-o what happened to .resume; on errors? it seems like none of them are resumable now.. 01:14
tony-o colomon: http server async should pass tests on moar now 01:21
timotimo japhb: i don't think i've run nqp benchmarks in quite some time, but as late as t.h8.lv/p6bench/2014-09-18-pre_release_nqp.html ← this one, the for_* benchmarks weren't removed from the output, even though there was no data at all for them 01:32
timotimo i forgot to actually write the question 01:38
how should i investigate this
colomon labster: ping? 03:13
labster colomon: pong
colomon hi!
didn't expect a quick response
IO::Path::More is failing tests
looks like some of them are because the dir sub returns IO::Path now (instead of Str) 03:14
labster Yeah, I'm around, but $dayjob is very busy for about 1 more week. 03:16
Thanks.
colomon gotcha 03:17
I'll see if I can figure out what is going on and send pull requests. but I think I need to sleep now 03:20
labster detailed test failures would be great 03:21
colomon o/ 03:32
bonsaikitten # perl6-m 03:35
> asd
Could not find Perl6::BOOTSTRAP in any of: ., blib, /var/tmp/portage/dev-lang/moarvm-2014.10/image/usr/languages/perl6/lib, /var/tmp/portage/dev-lang/moarvm-2014.10/image/usr/languages/nqp/lib
bonsaikitten looks like moarvm wrongly absorbs build-time paths 03:35
and thus rakudo-m fails to do anything useful 03:36
azawawi hi 05:02
can someone please add github.com/azawawi/totem to the panda ecosystem? 05:03
lizmat_ commute to T-Dose& 06:30
psch hello #perl6 o/ 07:27
lizmat good *, #perl6 from the T-DOSE 08:24
psch hi lizmat o/ 08:26
lizmat psch \o 08:28
rindolf lizmat: hi.
lizmat rindolf \o 08:29
rindolf lizmat: sup?
lizmat www.t-dose.org 08:31
moritz \o 08:37
lizmat moritz o/
masak morn'z, #perl6 09:10
psch masak o/ 09:11
masak I'll be relatively absent during the day, but it's still my hope to get another blog post out.
FROGGS timotimo: having all reports on one page is only true for the static web page of cpantesters, there's also a dynamic page
FROGGS timotimo: and, we would not have that problem of too many reports when we start :o) 09:12
woolfy and lizmat at T-DOSE ( www.t-dose.org ). A speaker did not show up, now lizmat jumps in and gives a nice talk about Perl 6. Some 20 people attending. 09:22
rindolf woolfy: nice. 09:27
FROGGS lizmat++ 10:06
lizmat *phew*
stretching the "A State of Perl 6" lightning talk to 1 hour, was a bit of a stretch
fortunately I had to explain a lot of things that were assumed known in the slides 10:07
psch lizmat++ 10:10
woolfy lizmat++ 10:18
The organisers of T-DOSE already were happy with us, and display of "of course we can whip up a presentation about Perl 6' made them close to delirious... 10:19
FROGGS *g* 10:38
dalek ast: 9e509a2 | (Elizabeth Mattijsen)++ | S09-typed-arrays/arrays.t:
Add tests for roundtripping typed arrays
10:40
psch $ ./perl6 ++FOO --bar=test ++/FOO -e'say %*OPTS.perl' 10:47
("FOO" => " --bar=test ").hash
\o/
although we might want the value as a HLL::CommandLine::Result as well i guess
or something similar from perl6 land 10:48
S19 is rather vague on this
hm, and i guess i have to trim the value too
cognominal are any of the Perl 6 related presentation at APW online? 10:51
psch cognominal: they're on the APW youtube channel: www.youtube.com/channel/UCB9cjCMJPZ...-oQ/videos 10:53
well, two at least, and i gather there were a few lightning talks too? 10:54
cognominal psch++ 10:55
lizmat_ m: say $*VM.version 11:00
camelia rakudo-moar 315ec6: OUTPUT«v2014.9.54.g.3.ac.9.a.7␤»
lizmat_ hmmm... why isn't that saying v2014.10 something ?? 11:00
FROGGS m: say $*PERL.compiler.build-date 11:02
camelia rakudo-moar 315ec6: OUTPUT«2014-10-22T20:30:08Z␤»
FROGGS lizmat_: that's the reason
FROGGS moritz: camelia got stuck three days ago 11:02
lizmat ah, hmm...
locally I get: $ 6 'say $*VM.version' 11:03
v2014.10
that feels incorrect as well, as I've done 1 push after the release
FROGGS lizmat: but you did not reconfigure I guess 11:04
lizmat ah, good point
lizmat reconfigures
lizmat nukes install and reconfigures 11:06
FROGGS lizmat: I never have to nuke my install folder... 11:08
I do that instead: gist.github.com/FROGGS/850dee443aeedc6f2a58 11:09
psch i usually do git clean -xdf by now
but that's pretty much nuking install/ i guess
FROGGS psch: I don't, because I usually have diffs in my checkouts 11:10
or other test scripts
psch uncommitted/added diffs get preserved in the repo clean is run in, and -xdf doesn't descent into other repos 11:11
but the scripts would of course get nuked
well, whatever works, i've learned to not put test scripts in not-repos 11:12
but that's because i git clean
FROGGS yeah
lizmat $ 6 'say $*VM.version'
v2014.10
:-(
FROGGS O.o
lizmat $ 6 'say $*PERL.compiler.build-date' 11:13
2014-10-25T11:11:27Z
it is the newly built one
FROGGS I have no idea then
lizmat feels like some git magic is missing 11:16
dalek nda: 9497994 | (Elizabeth Mattijsen)++ | / (8 files):
Fix 2014.10 deprecations
12:00
dalek ast: 60a2bd5 | (Pepe Schwarz)++ | S19-command-line (4 files):
Correct a few tests for S19 and their fudging.
12:49
psch hm, how do i deal with the accidental PR from yesterday that wants to merge the same branch i'd want to merge now? 12:52
does it get updated to the current state of the branch when i reopen it?
psch .oO( maybe i shouldn't have closed it... )
psch github.com/rakudo/rakudo/pull/324 13:13
apparently just reopening works \o/
i'm still not 100% sure if i'm handling options with optional values well 13:23
as it is in the PR i'm only taking a optional value for those options when there's an equals sign 13:25
otherwise, the option simply doesn't get a value, even if there's something that could be the value, which might result in a broken invocation 13:26
e.g. «perl6 --doc Pod::To::HTML $somefile» would complain with 'File not found Pod::To::HTML'
i can't assume that the next token is always an option, because then «perl6 --stagestats $file» never runs the file 13:28
github.com/rakudo/rakudo/pull/324/...4a98650R90 this is what i'm doing 13:31
i've thought of branching there with something like: «|| <.ws> { die "please use an =" }» but then optional values aren't optional anymore... 13:32
branching between line 94 and 95, that is
masak lizmat++ # jumping in and giving a Perl 6 talk 13:45
colomon masak: context for that lizmat++ ? 13:47
found it in the backlog, lizmat++ indeed!
breinbaas www.t-dose.org/, Eindhoven - where they have the highest IQ per square km in Europe (at least, that's what they say) :) 13:52
dalek kudo/nom: 5f797ed | (Elizabeth Mattijsen)++ | src/core/ (2 files):
s/x/tai, as x is so meaningless
13:53
lizmat m: say try die # does not actually die 14:00
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
lizmat m: say try +"foo" # this does, why ?
camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤ in method gist at src/gen/m-CORE.setting:13672␤ in sub say at src/gen/m-CORE.setting:15862␤ in block <unit> at /tmp/HzF9JlwvI6:1␤␤»
lizmat rakudobug ? 14:01
masak I'd say so. 14:03
please submit.
lizmat I'm told that all of YAPC::EU videos are now online 14:12
"including few small eastereggs videos, which are some jokes or announcements :)"
rakudobug submitted: #123053 14:14
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123053
cognominal www.youtube.com/user/yapceu/videos 14:15
FROGGS m: m: say (try +"foo").WHAT 14:36
camelia rakudo-moar 315ec6: OUTPUT«(Failure)␤»
FROGGS lizmat: you pass a Failure to say()
m: m: say (try +"foo").gist 14:37
camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤ in method gist at src/gen/m-CORE.setting:13672␤ in block <unit> at /tmp/6o2Zc5kHdZ:1␤␤»
FROGGS m: m: say so (try +"foo")
camelia rakudo-moar 315ec6: OUTPUT«False␤»
lizmat m: my $a = try "foo".Numeric # and this ?
camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from …»
FROGGS m: my $a = try "foo".Numeric; 1 14:39
camelia ( no output )
psch m: my $a; try $a = "foo".Numeric; $!.say
camelia rakudo-moar 315ec6: OUTPUT«(Any)␤»
FROGGS lizmat: end of block will be evaluated 14:39
lizmat m: say (try "foo".Numeric).WHAT 14:40
camelia rakudo-moar 315ec6: OUTPUT«(Failure)␤»
lizmat m: say (try die).WHAT
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
lizmat shouldn't that also be a Failure then /
?
FROGGS m: say (try fail "foo").WHAT 14:41
camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: foo␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29)…»
FROGGS I dunno
psch it does seem somewhat leaky
FROGGS feels weird all in all
lizmat I stumbled on this when Juerd was asking me about being able to do "42 + 'foo'" 14:42
having "foo" revert to 0
lizmat first attempt was: 14:43
m: say 42 + try +"foo"
camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤ in method Numeric at src/gen/m-CORE.setting:13670␤ in sub infix:<+> at src/gen/m-CORE.setting:4472␤ in block <unit> at /tmp/SPz96lb…»
lizmat m: say 42 + try { +"foo" } // 0 14:44
camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤ in method Numeric at src/gen/m-CORE.setting:13670␤ in sub infix:<+> at src/gen/m-CORE.setting:4472␤ in block <unit> at /tmp/XqS7LWQ…»
lizmat I guess S04:1054 applies here 14:46
synopsebot Link: perlcabal.org/syn/S04.html#line_1054
lizmat "Additionally, the C<try> block or statement implicitly enforces a C<use fatal> context such that failures are immediately thrown as exceptions." 14:46
vendethiel o/, #perl6. 14:48
psch vendethiel o/ 14:49
lizmat so is the "use fatal" leaking outward ?
vendethiel \o
psch lizmat: i think try { } is wrong here 14:52
lizmat: cf. "A try block by default has a CATCH block that handles all fatal exceptions by ignoring them."
lizmat indeed
psch m: { +"foo"; CATCH { default { } } }; say "alive" # this is ignoring
camelia rakudo-moar 315ec6: OUTPUT«alive␤»
psch m: say 42 + do { +"foo"; CATCH { default { } } } 14:53
camelia rakudo-moar 315ec6: OUTPUT«use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/UJ5aTieH6L:1␤␤42␤»
lizmat m: say try fail
camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: ␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29)␤…»
psch m: say 42 + do { { +"foo"; CATCH { default { } } } // 0 }
camelia rakudo-moar 315ec6: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in sub infix:<+> at src/gen/m-CORE.setting:4472␤ in block <unit> at /tmp/EIBebb9ZQL:1␤␤»
psch m: say 42 + (do { +"foo"; CATCH { default { } }; } // 0) # what Juerd wanted, i think 14:55
camelia rakudo-moar 315ec6: OUTPUT«42␤»
psch slightly unwieldy
psch it should work with try though 14:55
Juerd psch: Slightly...?
lizmat so it seems that a *fail* is not handled by try
m: say throw try fail
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/KrCI7bYOlB␤Undeclared routine:␤ throw used at line 1␤␤»
lizmat m: say try fail.throw
camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: ␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29)␤…»
psch Juerd: i'm writing quite a bit of java recently, i might have a bit of a warped perception... :)
masak I just got bitten by "passed a named param to a .new method, program compiled, error (much later) at runtime" 15:05
again.
I think we could detect this one statically. and I think there's a case for it being core, and on by default.
at least a warning.
m: class C { has $.x }; C.new(:x(1), :y(2)); say "alive, no warning" 15:06
camelia rakudo-moar 315ec6: OUTPUT«alive, no warning␤»
masak I would be 100% fine with the analysis being extremely stupid -- i.e. only cover the cases where the class is known at author time, and where we know for 100% sure that no attribute can possibly be there. 15:07
the above is such a case.
masak waves the campaign flag for this concern -- vive la catching of user mistakes!
lizmat
.oO( this was one of the first peeves I had with Perl 6, already 2+ years ago )
15:09
so count me in, masak :-)
masak \o/
I propose doing it in a branch, as an experiment, to see what the fallout is.
I might even have time to dig into it myself.
it feels like the MOP should be up to this. #fromthedepartmentofthebleedingobvious 15:10
vendethiel +1; this is a peeve as well: P 15:18
colomon +1
masak ok, just to be clear, here's the behavior I propose: 15:19
(a) when we parse a .new call
(b) to a class we know statically
(c) whose .new method has not been overridden 15:20
(d) with at least one named argument that would just get lost in space (because there's no corresponding public attribute)
...warn with an error message containing the name(s) of the named(s) with missing attribute(s) 15:21
lizmat why limit this to .new ?? 15:22
masak I guess because at some level, I still believe in S12's "Interface Consistency". 15:23
I just want to catch likely thinkos, not forbid extensionality outright. 15:24
vendethiel mmh.
m: class A{has $.a;};class B{has $.b;}; say B.new(:5a).a
camelia rakudo-moar 315ec6: OUTPUT«No such method 'a' for invocant of type 'B'␤ in block <unit> at /tmp/euQL41XfFb:1␤␤»
colomon fears this uncertainty about how to go about this is why we have no fix for this already.
vendethiel m: class A{has $.a;};class B is A{has $.b;}; say B.new(:5a).a
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!===␤Could not locate compile-time value for symbol $?CLASS␤»
vendethiel wut
lizmat space? A{ ? 15:25
colomon m: sub dummy { Nil; }; say dummy().WHAT
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
masak colomon: no uncertainty, in my view. lizmat's is a legitimate question, but it also has a motivated answer, IMO.
colomon say $*CWD 15:27
m: say $*CWD
camelia rakudo-moar 315ec6: OUTPUT«"/home/camelia".IO␤»
masak anyway, vendethiel: your example would of course be detected by the MOP as B having an $.a 15:31
vendethiel oke :)
masak so I foresee no ambiguity or false positives there 15:32
vendethiel
.oO( let's trust masak's foreshadowings )
15:33
colomon m: my $a = Nil; say $a 15:41
camelia rakudo-moar 315ec6: OUTPUT«(Any)␤»
colomon m: my $a := Nil; say $a 15:42
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
lizmat m: my $a is default(Nil); say $a 15:44
camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
psch m: .say if 'B' fff 'B' for <A B C B A>
camelia rakudo-moar 315ec6: OUTPUT«B␤C␤B␤»
lizmat the only way to have assignment to a var give Nil
psch m: $a.say if $a ~~ ('B' fff 'B') for <A B C B A> 15:44
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/MfQj5qujMf␤Variable '$a' is not declared␤at /tmp/MfQj5qujMf:1␤------> $a.say⏏ if $a ~~ ('B' fff 'B') for <A B C B A>␤ expecting any of:␤ method arguments␤ …»
psch m: $a.say if $a ~~ ('B' fff 'B') for <A B C B A> -> $a 15:45
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/E2KmAcRHVd␤Variable '$a' is not declared␤at /tmp/E2KmAcRHVd:1␤------> $a.say⏏ if $a ~~ ('B' fff 'B') for <A B C B A> ␤ expecting any of:␤ method arguments␤…»
psch heh
m: for <A B C B A> -> $a { $a.say if $a ~~ ('B' fff 'B') }
camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏B' (indicated by ⏏)␤ in method Numeric at src/gen/m-CORE.setting:13670␤ in sub infix:<==> at src/gen/m-CORE.setting:4522␤ in sub infix:<==> at src/gen/m-C…»
lizmat I just realized that it is the lack of 'use fatal' implementation, is what try +"foo" makes fail
m: say 42 + try (+"foo").throw
camelia rakudo-moar 315ec6: OUTPUT«use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/DrvFxtxJR5:1␤␤42␤»
psch m: for 1, 2, 3, 2, 1 -> $a { $a.say if $a ~~ (2 fff 2) } 15:47
camelia ( no output )
lizmat end of day 1 of T-Dose
social event&
psch the last two should work, i feel 15:47
which means i probably overlooked something when patching this a few weeks back
vendethiel: re: "can't rebase PRs". what exactly did you mean? 15:48
Ven psch: you can't change your branch target
colomon m: say " ".path.WHAT 15:49
camelia rakudo-moar 315ec6: OUTPUT«(IO::Path)␤»
colomon m: say " ".IO.WHAT
camelia rakudo-moar 315ec6: OUTPUT«(IO::Path)␤»
colomon m: say " ".IO.path.WHAT
camelia rakudo-moar 315ec6: OUTPUT«(Str)␤»
psch Ven: the one i want to merge from, right?
or the one i merge to? 15:50
Ven psch: I think neither can be changed
psch (github calls them 'base' and 'head')
colomon darn, just wanted to ask lizmat++ a question
psch Ven: help.github.com/articles/using-pul...repository but i can't do that. i suspect the merging party can decide where to merge to 15:51
or maybe closing and reopening locks that 15:52
oh 15:53
no, i understand, after rereading. before creation base and head can be changed
but after creation they're set, because one probably knew what one was doing
psch m: for <A B C B A> -> $a { $a.say if $a ~~ {'B' fff 'B'} } 16:02
camelia rakudo-moar 315ec6: OUTPUT«B␤B␤»
BenGoldberg m: say 2 fff 2; 16:04
camelia rakudo-moar 315ec6: OUTPUT«use of uninitialized value of type Nil in numeric context in block <unit> at /tmp/iHvfDghYC5:1␤␤Nil␤»
psch i think there's a .Bool call missing now 16:05
inside Perl6::Actions &flipflop 16:06
m: for <A B C B A> { say "B" fff "B" }
camelia rakudo-moar 315ec6: OUTPUT«Nil␤1␤2␤3␤Nil␤»
dalek ast: 933059b | usev6++ | S04-phasers/keep-undo.t:
Add tests for RT #111866
16:15
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=111866
dalek ast: fc20e7e | usev6++ | S02-names-vars/perl.t:
Fudge (skip) flapping test for rakudo.jvm
16:20
Noughb How's perl6 coming along? Heading for an offical release any time soon? 16:22
timotimo we've been doing monthly official releases for over a year :) 16:23
but that's probably not what you mean
awwaiid Noughb: apt-get install rakudo
(or better yet build the latest)
psch (building the latest)++
timotimo if you're looking for "when will we call the specification 6.0.0", there's three really big items that need resolving:
the GLR, NSA and NFG
which are the Great List Refactor (unifying and de-special-casing and also speedifying lists and iterators)
Native Shaped Arrays, which gives us tightly packed arrays of native values like ints/chars/doubles/... 16:24
and Normalized Form Grapheme, which is a way to get a string to have a single codepoint per grapheme no matter what crazy diacritics your troll users throw at you
psch hrm, i fixed $a ~~ ($x fff $y), but that breaks 16 tests in flip-flop.t :/ 16:24
timotimo Noughb: if you have more specific questions, we'll be happy to give you answers 16:25
for example, if you're worried about rakudo's performance, i can say that we've made a lot of headway over the last year and the GLR will give us a final, much needed boost towards not having to worry about performance any more 16:26
TimToady (we hope) 16:28
timotimo well, you better make it work right! :P
Noughb 3.bp.blogspot.com/-CDUNCGqVadY/UOoC...00/kel.gif 16:29
timotimo Noughb: feel free to ask specific questions :)
psch so what are ff and fff supposed to return? perl5 .. and ... return a 'boolean in item context', which we completely replace with ff and fff 16:30
TimToady p5 has no booleans :)
psch spectests currently don't look like they want Bools returned 16:31
masak .oO( p5 has no booleans -- true or false? ) 16:31
TimToady p5 returns increasing integers
psch TimToady: right, perldoc says "boolean value", i dropped the value
(it also says "scalar context", not "item context")
psch TimToady: does « $a ~~ ("A" fff "B") » look sensible to you? 16:32
m: for <A B C B A> -> $a { $a.say if $a ~~ {'B' fff 'B'} } # as here
camelia rakudo-moar 315ec6: OUTPUT«B␤B␤»
psch m: for <A B C B A> -> $a { $a.say if $a ~~ ('B' fff 'B') } # actually, this one 16:33
camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏B' (indicated by ⏏)␤ in method Numeric at src/gen/m-CORE.setting:13670␤ in sub infix:<==> at src/gen/m-CORE.setting:4522␤ in sub infix:<==> at src/gen/m-C…»
psch m: for <A B C B A> -> $a { $a.say if $a ~~ ?('B' fff 'B') } # nvm 16:35
camelia rakudo-moar 315ec6: OUTPUT«B␤C␤B␤»
psch i'm perfectly ok with that, no need to patch anything :) 16:36
TimToady with parens you're getting a double smartmatch
since integers are not Bool, Nil, Match, or Failure
psch TimToady: and ~~ bind tighter than fff, so i need prefix:<?> 16:37
i just took a bit too long to think of it
some context: irclog.perlgeek.de/perl6/2014-07-20#i_9052245 16:38
TimToady the ? returns a Bool, which prevents a subsequent 'B' ~~ 1 16:41
tadzik timotimo: (rakudobrew spectest suite) I don't see a problem :) 16:46
timotimo cool :)
tadzik where would it upload them, the not-yet-written cpandatesters? :)
timotimo: so your talk is not yet on APW's YT channel? 16:47
TimToady wonders if fff should return True but 1, True but 2, etc.
TimToady wonders if people understand a bit better now what the OKness proposal was about
we have this arbitrary list of values that are primarily intended to convey success/failure along with other pertinent information 16:49
in this case, we'd like a value that can return the line count while indicating success to smartmatching
tadzik sub compsuffix is export { state $ = $*VM.precomp-ext } # <3 16:50
timotimo tadzik: it's a single video with all lightning talks in it
tadzik lizmat++ and (rakudo team)++ :)
timotimo: ah, okay
psch TimToady: "line count" means "state changes"? i like the idea of returning True but $state, but i've repeatedly been told that mixins in CORE are slow 16:53
although prefixing with ? or so does seem a bit magic 16:54
TimToady "how many lines in this range so far"
so in your case you get 1,2,3
psch right, for the 2nd, 3rd and 4th iteration
TimToady relative line numbers, basically
psch state change is wrong, i see
TimToady for a loose definition of "line" 16:55
sequence numbers
p5 actaully return "3e0" on the last one, do you can recognize the end, marked by the 'e' :) 16:56
*so
but that's a terrible hack, so we have ^ instead 16:57
by analogy to ^..^
timotimo github.com/koorchik/formula-evalua...-benchmark - we have a new benchmark to excell at!
TimToady quick, stomp the excellerator! 16:58
timotimo huh, look at how the functions are implemented: github.com/koorchik/formula-evalua...rl6/ast.pl 17:02
@ast[$i].isa('Array') - oh my
psch that looks convoluted 17:03
timotimo that is some pretty unidiomatic perl6 code
tadzik FROGGS: yt?
psch timotimo: seems like a as-close-as-possible translation of the corresponding p5 code 17:04
timotimo it's not very close, i don't think 17:05
for example, in perl5 the names are constants, in perl6 they are variables
masak s/variables/first-class package objects/ 17:06
timotimo i just went ahead and invited him to our irc channel 17:07
timotimo afk for a bit :P 17:08
psch :D
moritz after GLR, my $c = <a b c>; $c.push: 'd' will work, right? 17:13
timotimo i'm pretty sure it should 17:18
TimToady a stronger case can be made for .plan than for .push
timotimo i'll run the benchmark through the profiler and see what's what 17:19
TimToady doubtless there are some optimizations that could depend on knowing whether a particular list can be extended 17:20
dalek ast/glr: de481bf | moritz++ | S (6 files):
start to get rid of Parcel
17:21
TimToady so maybe we need a monadoid to manage that 17:22
psch fwiw, 100 iterations of smart-match and flipflop code above with Bool mixin clocks in at about .79 seconds on my machine. nom is at about .38
i.e. "True but $seqnum" flipflop is about half as fast as current flipflop 17:23
although i'm sure it could be solved smarter than i solved it, but i don't know if i can make up a smarter solution 17:24
timotimo psch: since these values usually start at 0, maybe we can have a cache that keeps the boxed and mixed-in objects around and then just clones them each time?
psch timotimo: they start at 1 for flip flop, but i'd say "yes we can" 17:25
maybe i can figure that out, probably not this weekend though
moritz TimToady: I thought about more .map and .for methods; if we have both, I'd be weird to have 'for' as a syntactic construct but 'map' as a sub
moritz so for @list {block}, but map {block}, @list 17:26
TimToady: any plans on makiing 'map @list {block}' work too?
TimToady I think that hobgoblin lives off in a corner, and can be probably be ignored :) 17:27
psch oh, also of note: i'm not running jitted, which might make a difference with the 500 prefix:<++> that my little benchmark here runs
...actually 300
TimToady as for statement control map, it would be too ambiguous with the function 17:28
timotimo ah, hm.
TimToady are you mixing the number in each time? that sounds heavy 17:29
timotimo doesn't each mixin action cause Moar's specializer to go "okay, global deoptimization time!" 17:30
TimToady maybe we should look for bit that we can set in success/failure values that smartmatch can check very quickly
TimToady refrains from calling it the OKness bit 17:31
but something on the level of .DEFINITE
TimToady would like jnthn++'s opinion on that 17:32
we don't have to call it .OKness, feel free to bikeshed what a "successfulness" bit would be named 17:33
psch yeah, my implementation is as naive as it can get
timotimo let's call it the "good bit"
(like the "evil bit" that we have in networking)
TimToady well, but what if it's bad this time?
timotimo hmm 17:34
maybe we should call it something without an inherent value
like a "duck bit"
TimToady but it wants to express meta-value 17:35
psch github.com/rakudo/rakudo/blob/nom/....nqp#L5333 i'm just wrapping this Op.new in another one that amounts to $state.Bool but $state
moritz any objections to me introducing method for as self.flat.map?
that way code can start to use it, and have a chance to break less during GLR
TimToady seems okay to me
timotimo there you're using that "okay" word again! 17:36
moritz m: say ((1, 2), (3, 4)).map({ say .perl; $_ }) 17:37
camelia rakudo-moar 315ec6: OUTPUT«1␤2␤3␤4␤1 2 3 4␤»
moritz m: say ((1, 2), (3, 4)).map({ say .perl; $_ }).perl
camelia rakudo-moar 315ec6: OUTPUT«1␤2␤3␤4␤(1, 2, 3, 4).list␤»
moritz seems .map already behaves like .for will
dalek kudo/nom: 081fa81 | moritz++ | src/core/Str.pm:
micro-optimize Str.trans
17:38
kudo/nom: af9e90e | moritz++ | src/core/ListIter.pm:
smaller scope in ListIter.reify
TimToady moritz: yes, but .map's .flat is going away 17:39
moritz TimToady: right
timotimo oh, look, we have 18.28% of exclusive time spent in ListIter.reify ... again 17:41
tadzik in that benchmark?
funny things is, it bails out with a wrong sum at the second run 17:42
timotimo yeah, it does 10k iterations and expects the result to be the same as for 100k iterations
i set the number of iterations back up to 100k
t.h8.lv/p6profile/formula_profile_1.html
second most exclusive time spent is gimme, at 10.5% 17:43
damn the GLR is needed.
Ven timotimo: remember my profiling :)? (of the game of life) 17:44
timotimo yeah, how much was that again?
tadzik I like how 75% of stuff is jat
otoh, is that the reason for incorrect results?
Ven around 55% in the different list/map methods
TimToady is looking forward to hypers on native arrays
tadzik ah, that's just a bug in the code, alrihgt 17:45
timotimo 4% exclusive time spent in isa 17:46
dalek ast: d262e2e | (Pepe Schwarz)++ | S03-operators/flip-flop.t:
Add a test for flip-flop with "True but $seqnum".
17:47
TimToady or maybe we should just make it easier to generate fake Match objects with numeric values 17:53
TimToady not sure that would beat True but $seqnum though 17:54
it would fit into the current I-know-success-when-I-see-it scheme though 17:55
TimToady would be kinda funny to have a Match object that + return 3 for, but @ return nothing 17:56
psch fwiw, i've been thinking of True but $seqnum as a name for the semantics
TimToady maybe there's some way to optimize creation of Bool plus a payload 17:57
after all, Failure can be seen as kind of a Nil plus a payload 17:58
that's why I'm thinking leave Bool alone and muck with Match instead
timotimo COMPUTED [100000] ITERATIONS IN [87] SECONDS 17:59
waitwhat.
what did i do?
oh
TimToady ohoh 18:00
timotimo i replaced the custom sum implementation with [+] @args
t.h8.lv/p6profile/formula_profile_2.html
not sure if that's all that's responsible, though
TimToady [+] is one of those operators that could actually be parallelized internally, given a suitable data structure 18:02
timotimo hm. 18:03
TimToady likewise [*], though in either case one could get weirdness near the Rat->Num promotion
timotimo mhm
TimToady probably compiling those down to very tight jitted code is more useful in general 18:05
timotimo how exactly do we [+]? 18:07
that's reduce_left, right? 18:08
masak [+] and [*] could be map-reduced, because of their monoidal structure.
timotimo yeah, they could 18:09
TimToady well, it's METAOP_REDUCE_LEFT actually
but in general you can trap it at compile time since the ops are lexically scoped 18:10
timotimo right
the optimizer could know about that or we could have a trait for these operators that lend themselves to be map-reduced
TimToady well, METAOP_REDUCE_LEFT is actually called at compile time, iiuc 18:11
or at least it could be 18:12
timotimo m: say "the custom sum operation makes the program take { 339 / 87 } times longer than with [+]"
camelia rakudo-moar 315ec6: OUTPUT«the custom sum operation makes the program take 3.896552 times longer than with [+]␤»
TimToady is the custom sum routine done in natives? 18:13
timotimo maybe all we need to do for that to work is put an "is pure" trait on those
i don't think so
TimToady well, not that [+] is either
masak the operator needs to be associative. 18:14
timotimo ah, also: the code there is working with rational numbers instead of ints and stuff 18:16
that may also have strong performance implications
TimToady we've specced 'native' rats, but we don't have 'em yet 18:17
timotimo right
dalek ast: 72709f1 | usev6++ | S05-metasyntax/unknown.t:
Add test for RT #77562
18:27
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77562
timotimo huh. 18:29
timotimo it may very well be that i accidentally measured the changed code with only a tenth of the iterations? 18:29
that would be embarassing
dalek kudo/nom: 96d6011 | moritz++ | src/core/Any.pm:
Introduce method for

it is now an alias for .map, but .map will stop to flatten its invocant eventually; .for will continue to behave as it does now
18:36
timotimo i didn't measure wrongly, the [+] way really is 4x faster than the custom loop 18:40
m: "and without a profiler running in the background, the ratio is { 304 / 78 }." 18:42
camelia ( no output )
timotimo m: say "and without a profiler running in the background, the ratio is { 304 / 78 }."
camelia rakudo-moar 315ec6: OUTPUT«and without a profiler running in the background, the ratio is 3.897436.␤»
timotimo my measurements are misbehaving 18:51
somehow i can't get it to perform poorly any more, wtf? 18:58
psch moritz: i've brought my Str.trans branch up to nom. do you think merging it makes sense, considering LSM is (or 'was supposed to be') a transient solution? 18:59
timotimo it could be that the .isa('Array') vs ~~ Array change gave me the huge performance improvement 19:03
psch dinner & 19:05
timotimo oh, wow, the isa function is pretty complex 19:06
moritz psch: I don't think anybody is working on a "proper" Str.trans, so it makes sense to improve the current thing 19:08
timotimo: at the very least, .isa has to do a dynamic lookup, whereas Array without the quotes goes straight into the SC
timotimo yeah 19:21
colomon 200 modules passing all tests! \o/
masak wow. 19:22
timotimo not bad :)
tadzik woot 19:25
FROGGS dylanwh: what do you think about something like that for cpantesters matrix? froggs.de/perl6/cpantesters/ 19:28
err, cpandatesters
tadzik looks cool :) 19:33
colomon BTW, the ecosystem has a ton of low-hanging fruit in it. I've got pull requests out that will get two more modules passing, and my guess is quite a few more failing modules could be easily fixed by someone willing to put in a little effort. And lots of passing modules need more tests... 19:36
FROGGS colomon: true 19:38
when I made PRs for modules that are shipped with star then I also recognize that it often is just a two line patch 19:39
though, it would be easier for me to fix foreign modules when I'd see the failing reports 19:40
and that's why I wanna have cpandatesters *now*
tony-o FROGGS: ugexe i think is getting into something like that 19:50
colomon: i fixed http server async :-)
FROGGS tony-o: ohh, good to know
colomon tony-o: yes, I saw in the smoke results! :) 19:51
tony-o++
tony-o where are the smoke results? i should bookmark ..
FROGGS tadzik / dylanwh: I added dummy reports: froggs.de/perl6/cpantesters/
raydiak good afternoon #perl6 19:55
FROGGS hi raydiak 19:56
.tell ugexe You are working on something related to module installation tests? please ping me
yoleaux FROGGS: I'll pass your message to ugexe.
masak greetings raydiak
raydiak nice mockup FROGGS++ 19:57
FROGGS ohh, thanks :o)
raydiak it's not bootstrappy enough, it already looks clean and shiny and rounded :) 19:58
tony-o lol
colomon tony-o: sorry for spacing out there. host08.perl6.com:8080/report 19:59
tony-o thank you 20:02
dalek ast: e8f5737 | usev6++ | S32-str/sprintf.t:
Modify fudging for RT #116280
20:07
ast: babf768 | usev6++ | S10-packages/basic.t:
Add test for RT #120561
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=116280
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120561
timotimo t.h8.lv/p6profile/formula_profile_latest.html / t.h8.lv/p6profile/formula_profile_latest.pl 20:21
might be some interesting things to spelunk in there
like in one evaluate ast call, we spend 2.44% of time doing a return 20:22
dalek ast: f9b1da5 | usev6++ | S02-types/native.t:
Add test for RT #121349
20:24
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121349
timotimo things like: why aren't we jitting or inlining postcircumfix:<[ ]>
gtodd one would think that postcircumfix:<[ ]> is something that gets used fairly often 20:26
tony-o who is supernovous in here? 20:29
FROGGS (s)he's not here 20:30
psch hm, rebasing against nom made the history in my trans branch look kinda wonky
moritz: i'll try and clean this up a bit and comment on the PR when it's clean(er than it's now) 20:31
timotimo the jit bails out in a postcircumfix:<[ ]> from encountering the multicachefind op 20:32
another postcircumfix:<[ ]> got jitted, though
timotimo that seems easy enough to jit. 20:33
timotimo (unless of course you make loads of stupid typos along the way and don't compile before committing and pushing ...) 20:41
psch timotimo: so the travis failure in my tr branch is your doing? 20:44
in src/jit/graph.c, if i can read... :) 20:45
raydiak so I replaced the mobo in my mom's laptop yesterday, and the pun totally escaped me until now...is my mother's motherboard my grandmotherboard? 20:49
masak .oO( motherboard-of-dragons ) 20:50
colomon is listening to his son listen to "How To Speak Dragonese"
raydiak yeah replacing a laptop motherboard w/no article or video kinda feels like slaying a dragon
dalek ast: 7f81801 | usev6++ | S12-attributes/ (2 files):
Add tests for RT #102478
20:52
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=102478
raydiak colomon: what does dragonese sound like? 20:53
colomon raydiak: it sounds like mangled baby talk. :) 20:53
raydiak haha :) 20:54
colomon raydiak: this book is actually an adventure story about the book How to Speak Dragonese, rather than a textbook on the subject. ;)
masak no don't mangle babies
lizmat colomon: what was the question?
colomon It's How To Train Your Dragon book 3
lizmat: I think it was about .path vs .IO 20:55
raydiak ah, I see...that makes more sense
raydiak was imagining some skyrim spinoff children's books
timotimo at the same url there's now also latest_speshlog.txt and latest_jitlog.txt 20:56
colomon lizmat: I think I figured stuff out. It is perhaps worth pointing out that Str.path doesn't seem to be deprecated in Rakudo, while you seem to have neglected to explicitly define IO::Path.path in S32 20:57
lizmat I was just realizing that as well
:-(
some fixing is in order, it would seem 20:58
colomon it's particularly confusing if you're looking at the results from dir, because it used to return strings which you'd use .path on to turn into IO::Path, while now it returns IO::Path which .path turns to a string
lizmat when I changed .dir to return Str instead of IO::Path, a *lot* of things broke :-( 20:59
colomon …. other way around, no?
m: say dir()[0].WHAT
camelia rakudo-moar 315ec6: OUTPUT«(IO::Path)␤»
timotimo and the .html profile _latest.html has also been updated
lizmat hmmm.... 21:00
dir used to return Str? are you sure?
colomon not sure, but that's certainly what the IO::Path::More tests seemed to think 21:01
lizmat hmmm... I will look at that tomorrow and make sure it matches spec 21:01
colomon I mean, list of Str.
Mind you, I think your changes are sensible!
just need a bit more clarity in the spec 21:02
dalek kudo/nom: 2797925 | (Elizabeth Mattijsen)++ | README.md:
Fix typo
lizmat colomon: seems only t/spec/S32-io/dir.t fails 21:10
colomon lizmat: fails with what? 21:11
lizmat d0a1b098 (Solomon Foster 2013-06-03 20:18:44 -0400 14) ok @files.grep(*.basename
timotimo of course jitting multicachefind only gets us to invokewithcapture which doesn't do it any more
lizmat it expected an IO::Path object there
test #3
but I'm surprised it doesn't break anything else 21:12
hmmm... it also breaks Panda 21:13
but I could fix that at the same time
lizmat but not now, as I'm tired and need the extra hour this night 21:18
so good night, #perl6!
raydiak g'night lizmat 21:19
timotimo gnite lizmat
raydiak it's interesting as this algebra module progresses how much of it ends up resembling a compiler...it parses, emits, uses a tree for the working structure, has an "optimizer" for simplifying expressions, etc... 21:30
masak all software wants to be either an interpreter or a compiler. 21:31
psch and an email client ;)
raydiak wow I never quite thought about it like that...but that makes sense 21:32
psch .oO( that's still interpreting... )
masak psch: think of how much software out there that's mainly a switch statement in a loop. that's an interpreter. 21:33
psch: compilers arise as you add layers of caching to an interpreter.
psch masak: i was jesting, in reference to en.wikipedia.org/wiki/Jamie_Zawinsk...nvelopment 21:35
masak: i do agree with your point. 21:36
masak oh, sorry, I meant those last two lines for raydiak :)
psch: I almost replied to you "an email client is still an interpreter", but then you pre-empted me :)
raydiak that's a really interesting way of thinking about it 21:38
psch masak++ # thinking
raydiak I remember thinking about Pray as a "compiler" for scene files -> image files, in a conversation I was having about futamura projections 21:39
masak++ # ensuring I get my paradigm shift for the day
masak I have the feeling SICP the book gets its oomph quite a bit from that insight. and maybe Lisp in general does, too. 21:46
timotimo t.h8.lv/p6profile/jit_bails_per_frame_name.txt 21:49
raydiak thanks, I'll put that book on my list of books...lisp is already on my list of languages to learn :) 21:52
masak it can be found legally for free online, and nowadays in a variety of nice formats: sicpebook.wordpress.com/ebook/ 21:54
raydiak oh awesome 21:55
colomon SICP is one of the books I'd love to tackle if I mysteriously got another five hours in each day.... 22:18
Unforutunately I have a good stack of such books at this point. :( 22:19
masak I'm trying to rope colleagues into tackling SICP with me, by meeting up regularly and talking about it.
a bit like a reading circle, but with code.
colomon that's a fine idea
masak but yeah, there's definitely an element of "in my copious spare time" involved. 22:20
raydiak speaking of things that consume time...any suggestions for a linux distro to put on an old craptop for my g/f? was thinking lubuntu but I haven't ridden the distro merry-go-round for a few years 22:26
masak raydiak: you might want to have a look at linuxmint.com/ -- very no-nonsense, easy install, and doesn't have Unity. 22:28
raydiak yeah I'm running mint kde on my own laptop, it works pretty great 22:29
guess light resource usage is one of my top concerns for the 2007 low-end laptop I'm putting this on 22:30
raydiak lucky for me we fell off moore's law, or the thing would be darn near useless :) 22:31
psch i'm off to bed. good night, #perl6 \o 22:36
masak 'n, psch
raydiak good night psch o/
colomon \o
raydiak heh it appears I changed the passwords on the thing due to the keyboard keys that don't work 22:39
raiph I'm curious if P6 is on the static typing side of the fence in regard to leonerd's answer to the question heard in last 2 minutes of the yapc eu video of his futures module www.youtube.com/watch?v=u9dZgFM6Ft...w#t=48m22s 22:52
I see lizmat in the audience so perhaps she has an answer already? 22:53
masak 'night, #perl6 23:12
raiph .ask perl6 to encourage someone to post a P6 version of the tiny reverse polish forthish "compiler" at www.reddit.com/r/perl/comments/2kb0...n_in_perl/ (I plan to have a go early next week if no one else gets to it and it's still in the top 10 on /r/perl) 23:59
yoleaux raiph: I'll pass your message to perl6.