IOninja
.oO( why isn't Range.Seq a thing... )
00:25
Geth rakudo: MasterDuke17++ created pull request #1026:
Add nil return constraints where possible v2
02:24
rakudo/nom: e8af8553ea | (Zoffix Znet)++ | src/core/Baggy.pm
Fix .Bool, .so, .not, .hash, and .elems on Baggy:U

Currently all of these crash, begging for Baggy:D
Use `multi` instead of `only` methods to handle Baggy:D invocants, so that Mu:U/Any:U candidates take care of the Baggy:U ones.
05:25
roast: f1c074e9d4 | (Zoffix Znet)++ | S02-types/baggy.t
Test .Bool, .so, .not, .hash, and .elems on Baggy:U

Rakudo fix: github.com/rakudo/rakudo/commit/e8af8553ea
IOninja I think I spotted the place where test files get lost in t/harness6 06:17
m: say <a b c> Z <A B C D>
camelia ((a A) (b B) (c C))
IOninja ^ has a construct like that and 'D' is lost; 'D' being a batch of test files
(I *think*; it maaay be getting lucky and spliting up very evenly) 06:18
well, tried a bunch of alterations to the way slow tests are batched in the spectest and they did exactly zero difference. 06:42
My slowage of stresstest is probably due to all the new tests, not to when slow tests are run. 06:43
Geth rakudo/nom: cdc71cb16c | (Zoffix Znet)++ | t/harness5
Fix shebang
IOninja don't know how I ended up trying to speed up the harness when I started this evening by trying to implement .FatRat coercers :| 06:46
2am
IOninja drops to bed
Geth rakudo/nom: 18 commits pushed by (Daniel Green)++, lizmat++
review: github.com/rakudo/rakudo/compare/c...3ff01249f1
08:17
rakudo/nom: fafe663908 | (Elizabeth Mattijsen)++ | src/core/Junction.pm
Make Junction creation about 20% faster

Also make sure we use an IterationBuffer internally
I also tried to nqpize the "values.eager.list" combo, but that only slowed things down. Looks like the static optimizer already does a good job optimizing that one, and nqpizing misses that code path so making things slower.
10:43
roast: hchienjo++ created pull request #245:
Add tests for `flat`.
10:46
lizmat m: my @a = ^10; my $a = now; for ^10000 { my $b = Junction.new("all",@a) }; say now - $a; $a = now; for ^10000 { Junction.new("all",@a) }; say now - $a # something really screwy going on when sinking a Junction 10:47
camelia 0.0254874
0.19851161
lizmat commented on hchienjo's PR 10:50
m: say ("a",<b c>).flat; say <a b c>.flat
camelia (a b c)
(a b c)
Woodi_ lizmat: testing it on 2017.01 I got: ~ 0.0790697 0.07914240 timings. but 32bit here 11:00
timotimo lizmat: a long time ago i noticed that calling .sink on something that doesn't have it is very costly, maybe that's related 11:52
i added a method sink to some class that didn't use to have it and some test ran much faster
interesting 11:53
[Tux] This is Rakudo version 2017.02-92-g3ff01249f built on MoarVM version 2017.02-9-gc5379702
csv-ip5xs 2.833
test 12.615
test-t 4.800 - 4.827
csv-parser 13.247
timotimo profiler says the sink case spends 54% of its time in dispatch:<.?> and 12.38% of its time in sink (of Junction)
dispatch:<.?> doesn't even show up in the first code examplo 11:54
i expect it'll get much faster when you turn the .?sink in Junction's sink method into something nqp-ish 11:55
jnthn I'm curious why we'd ever need to .?sink given that Mu.sink exists 11:57
m: Mu.sink
camelia ( no output )
timotimo fair enough
jnthn So just turning it into .sink is probably a win :) 11:58
There's some issues with spesh at present whereby it runs out of specializations for Mu.sink because it ain't smart enough to realize there's nothing special about it :) 11:59
[Tux] This is Rakudo version 2017.02-93-gfafe66390 built on MoarVM version 2017.02-9-gc5379702 12:04
csv-ip5xs 2.888
test 12.633
test-t 4.788 - 4.848
csv-parser 13.227
neat :)
timotimo mhm
i'm going to spectest the change of throwing out that ? 12:11
it shouldn't give us trouble, but you know how things are sometimes :D 12:12
it's happy so i'll push 12:17
Geth rakudo/nom: b283e52bb2 | (Timo Paulssen)++ | src/core/Junction.pm
since Mu has a sink method, Junction.sink don't need to .?sink
12:18
timotimo it's not blazing fast, but it's far faster than it used to be 12:19
m: my @a = ^50; my $a = now; for ^100_000 { my $b = Junction.new("all",@a) }; say now - $a; $a = now; for ^100_000 { Junction.new("all",@a) }; say now - $a 12:24
(i made the work load 50x bigger) 12:25
camelia 0.1707645
8.5596342
timotimo now let's wait for the rebuild
m: say "hi" 12:32
camelia hi
timotimo m: my @a = ^50; my $a = now; for ^100_000 { my $b = Junction.new("all",@a) }; say now - $a; $a = now; for ^100_000 { Junction.new("all",@a) }; say now - $a
camelia 0.1640936
1.12867647
timotimo yeah, it's a bit better. still a large impact 12:33
Geth rakudo/nom: 0be724727f | (Elizabeth Mattijsen)++ | src/core/List.pm
Use IterationBuffer instead of nap::list where needed
13:46
IOninja m: 1.Rat: 42; 1.0.Rat: 42 13:54
camelia ( no output )
IOninja Gonna remove these (dummy params that take an epsillon that's never used), unless someone has an objection. 13:55
List of types that do and don't take it: gist.github.com/zoffixznet/c8c4325...39fea59c79 13:56
And will add an epsion to complex, since it uses nums for its components, so there it makes sense.
.tell jnthn I forcee some largish changes due to IO grant work. Some things have zero tests at all. Others, only tests in master. I currently plan to write an advance notice and publish it today-ish. The changes will land in 2017.04 release and will include a detailed info on what changed. If that's a bad plan, let me know. 16:06
yoleaux2 IOninja: I'll pass your message to jnthn.
IOninja .tell jnthn Some examples: is `link` taking args in reverse (and being documented as such), despite using them in right order in error message. So I forcee this being changed to follow the same order of args as `ln` Linux command, which follows the "sub($existing-thing, $new-thing)" order that `move`, `rename` and ilk follow. The other change I'll propose is tossing Seek* enum and passing position to 16:13
yoleaux2 IOninja: I'll pass your message to jnthn.
IOninja .seek() as named args. The `link()` has no tests at all. The `seek()` only has the tests I added in January, 2017.
.tell .seek() as named args. The `link()` has no tests at all. The `seek()` only has the tests I added in January, 2017
yoleaux2 IOninja: What kind of a name is ".seek()"?!
IOninja .tell jnthn .seek() as named args. The `link()` has no tests at all. The `seek()` only has the tests I added in January, 2017
yoleaux2 IOninja: I'll pass your message to jnthn.
nine_ Slowly a plan forms in my mind for how to fix indirect name lookup of symbols loaded via "require". 16:42
It's nice to be able to think clearly again :) cold--
IOninja \o/ 16:43
MasterDuke nine_: did you happen to see the discussion a little while ago in #moarvm about t/spec/S11-modules/nested.t? 16:45
there are very occasional flaps, but haven't been able to repro
nine_ MasterDuke: no, have missed quite a bit :/ 16:48
MasterDuke nine_: do you have any idea what the fix should be that jnthn mentions here irclog.perlgeek.de/perl6-dev/2016-0...i_13173728 ? 16:53
nine_ MasterDuke: yes, I think, I see it. 17:02
MasterDuke: the check is hard coded to 64 bits, but in the signed case we actually only have 63 bits available.
MasterDuke nine_: thanks, will trying playing around with that check 17:14
nine_ The fix seems trivial, but it fails one of nqp's tests. 17:15
gist.github.com/niner/da7d13490b35...192eaeee8b
t/serialization/01-basic.t ............. 1/1502 Cannot unbox 64 bit wide bigint into native integer
at t/serialization/01-basic.t:671 (<ephemeral file>:<mainline>)
MasterDuke does it do anything to t/spec/S02-types/int-uint.t? 17:20
nine_ t/spec/S02-types/int-uint.t .. 1/75 Cannot unbox 64 bit wide bigint into native integer in block <unit> at EVAL_69 line 1 in block <unit> at t/spec/S02-types/int-uint.t line 33 17:21
MasterDuke and i still see the same behavior with "a" x <large values> 17:26
Geth rakudo: MasterDuke17++ created pull request #1027:
Change atpos of @!named_names to atpos_s
18:04
nine_ While I have a somewhat reasonable plan for getting the required symbols into MY::, I don't actually understand why require ::($foo) is broken. REQUIRE_IMPORT merges the symbols into GLOBAL at runtime. And that's the same GLOBAL as the caller sees. 18:41
It should actually still just work.
Aaah...as soon as I wrote that it became clear. It's only an issue with nested name spaces. Top level symbols work just fine, but if the caller has the top part of the name space as a lexical symbol, it won't see the global one into which we imported. 18:44
Geth rakudo/nom: 74573d0684 | (Daniel Green)++ | src/core/Signature.pm
Change atpos of @!named_names to atpos_s

These were missed in the recent conversion of @!named_names to an nqp::list_s.
18:47
rakudo/nom: 356feee99b | (Zoffix Znet)++ | src/core/Signature.pm
Merge pull request #1027 from MasterDuke17/fix_some_atpos_of_named_names_in_Signature

Change atpos of @!named_names to atpos_s
nine_ To stay with the lexical_module_load spirit, I'll have to make those require'd symbols lexical as well. But that requires me to change indirect name lookup ::() to look into the lexical scope, too.
Otherwise require ::($foo); cannot work, as that compiles to something like require $foo; ::($foo); 18:48
mst surely indirect name lookup *should* look into the lexical scope?
Geth roast: dcc20bbc5a | (David Warring)++ | S14-roles/mixin.t
add role mixin multi-dispatch sanity tests

  See irclog.perlgeek.de/perl6/2017-02-25#i_14165034
19:11
roast: f6f8c08377 | (Zoffix Znet)++ | S14-roles/mixin.t
Scope test role and class to test's block
19:12
lizmat nine: looking in the lexical scope is something I expect ? 19:27
m: my $a = 42; say ::(q/$a/) # seems it already dpoes ? 19:28
camelia 42
lizmat *does
Geth rakudo/nom: a4af702d65 | (Zoffix Znet)++ | 5 files
Fix/Improve .Rat and .FatRat coercers

  - Make Complex coercers take $epsilon arg since their components are Nums
  - Fix Instant.Rat routing the conversion through Num;
   TAI is already a Rat, so just return it
  - Implement Cool.FatRat
  - Implement Numeric.FatRat that does .Rat.FatRat; any type that can provide
... (12 more lines)
19:51
nine_ lizmat: ooooh...that makes things easy :) 19:52
Ah, of course, that's because PseudoStash's $!storage is the caller's lexpad. 19:56
Geth roast: be6f6cd86f | (Zoffix Znet)++ | S32-num/rat.t
Test .Rat/.FatRat coercers

Rakudo fix: github.com/rakudo/rakudo/commit/a4af702d65
19:58
roast: 6cb09469af | (Zoffix Znet)++ | S32-num/rat.t
OCD
20:00
rakudo/nom: 79d5670863 | (Elizabeth Mattijsen)++ | 4 files
Some more nqp::list -> IterationBuffer migration
20:16
rakudo/nom: 81fcd1bfe3 | (Elizabeth Mattijsen)++ | 4 files
Give Mu its own .iterator

Should make "Mu Z 42" work
20:28
lizmat m: dd Mu.list # should this be fixed ? 20:35
camelia No such method 'list' for invocant of type 'Mu'
in block <unit> at <tmp> line 1
IOninja IMO not, otherwise we'd be drifting all the Any methods into Mu 20:39
What sort of Mu stuff do we have?
other than Junctions
I mean Mu, but not Any.
timotimo well, everything from nqp is Mu, but not Any
IOninja Like what? 20:40
I mean from user's perspective.
lizmat IOninja: so maybe I should revert github.com/rakudo/rakudo/commit/81fcd1bfe3 ?
IOninja lizmat: ¯\_(ツ)_/¯ I'm no expert 20:41
m: Mu Z 42
camelia WARNINGS for <tmp>:
Useless use of "Z" in expression "Mu Z 42" in sink context (line 1)
No such method 'iterator' for invocant of type 'Mu'
in block <unit> at <tmp> line 1
IOninja Are there real-world cases where this situation would occur; that a Mu would be involved 20:42
lizmat not sure... but the error is LTA in any case, because apparently Z takes Mu, but then doesn't know what to do with it 20:44
otherwise :-)
IOninja :)
m: say elems gather for Any.^methods(:local)».name { Mu.can: $_ or .take } 20:46
camelia 87
Geth rakudo/nom: 313e7b28c9 | (Elizabeth Mattijsen)++ | src/core/Parameter.pm
Streamline Parameter.named_name|type_captures

Also make sure they have an IterationBuffer inside of their List
22:12
rakudo/nom: e723e001da | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Make sure R:It.ShapeBranch.dims returns proper List

With an IterationBuffer for its $!reified
22:22
rakudo/nom: 5843ee6b08 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Make sure R:It.RoundRobinIterables returns proper List

With an IterationBuffer for its $!reified
22:23
rakudo/nom: 7c279c383e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Make sure R:It.ShapeIndex returns a proper List

With an IterationBuffer for its $!reified
22:36
rakudo/nom: 318f8eec4e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Make sure R:It.ZipIterables returns proper List

With an IterationBuffer for its $!reified
lizmat and that concludes my hacking for today 22:37
good night, #perl6-dev!
IOninja night