Geth rakudo: MasterDuke17++ created pull request #1196:
Simplify signatures for Regex and Associative...
00:00
timotimo don't have an intuition for that :( 00:33
AlexDaniel- MasterDuke: so is it “:D” that makes all that difference or is it because of unneeded args? 00:35
MasterDuke both 00:46
but i believe the ":D" made more 00:47
AlexDaniel- MasterDuke: soo… does it mean that you can make a bunch of stuff in rakudo faster if you grep for methods with unused params and autoreplace them with $ ? 00:49
MasterDuke timotimo: no worries, it doesn't do that any more after my new PR 00:50
AlexDaniel-: probably. don't know how many of them there are though
benchable6: compare HEAD sub f1(Mu:D \var, int $im, int $monkey, int $s, int $a, $context) { rand }; my $s; $s += f($_, $_, $_, $_, $_, $_) for ^1_000_000; say $s; ||| sub f2(Mu:D \var, $, $, $, $, $) { rand }; my $s; $s += f($_, $_, $_, $_, $_, $_) for ^1_000_000; say $s 00:53
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, ¦HEAD: «04===SORRY!04=== Error while compiling /tmp/o7bHvwm18w␤Undeclared routine:␤ f used at line 1␤»
MasterDuke benchable6: compare HEAD sub f1(Mu:D \var, int $im, int $monkey, int $s, int $a, $context) { rand }; my $s; $s += f1($_, $_, $_, $_, $_, $_) for ^1_000_000; say $s; ||| sub f2(Mu:D \var, $, $, $, $, $) { rand }; my $s; $s += f2($_, $_, $_, $_, $_, $_) for ^1_000_000; say $s
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, ¦HEAD: «Benchmark: ␤«timed out after 10 seconds»»
MasterDuke benchable6: compare HEAD sub f1(Mu:D \var, int $im, int $monkey, int $s, int $a, $context) { rand }; my $s; $s += f1($_, $_, $_, $_, $_, $_) for ^100_000; say $s; ||| sub f2(Mu:D \var, $, $, $, $, $) { rand }; my $s; $s += f2($_, $_, $_, $_, $_, $_) for ^100_000; say $s
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, gist.github.com/181abcc2eec0bd0d71...c64a6f8233
MasterDuke so ~6% faster for $ 00:54
AlexDaniel- benchable6: compare HEAD sub f2(Mu:D \var, $, $, $, $, $) { rand }; my $s; $s += f2($_, $_, $_, $_, $_, $_) for ^100_000; say $s ||| sub f1(Mu:D \var, int $im, int $monkey, int $s, int $a, $context) { rand }; my $s; $s += f1($_, $_, $_, $_, $_, $_) for ^100_000; say $s; 00:55
benchable6 AlexDaniel-, starting to benchmark the 1 given commit
AlexDaniel-, gist.github.com/401cc621cc0f467742...b1d330852c
AlexDaniel- MasterDuke: is it? Whateverable server is a bit busy doing stuff for regressionable 00:56
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Streamline "is pure" trait handling 00:57
travis-ci.org/rakudo/rakudo/builds/288050067 github.com/rakudo/rakudo/compare/b...1df2cb0c52
MasterDuke i tested locally a bunch. a million iterations was about .1s faster for $
~.83s vs ~.73s 00:58
AlexDaniel- oh yeah I see it now 01:00
it's definitely significant
fwiw I don't think I'd be hunting for more regressions 01:02
it's a lot of wörk and is only fun for the first hour…
MasterDuke it doesn't sound like tons of fun, but i think it's been worthwile both times 01:07
but it sounds like, hint hint, now you've got time to review PRs... 01:08
Geth rakudo/nom: 317ae16c0e | (Daniel Green)++ | src/core/Match.pm
Simplify signatures for Regex and Associative...

multis of INTERPOLATE.
01:16
rakudo/nom: ebb0521bd2 | (Aleks-Daniel Jakimenko-Aleksejev)++ (committed using GitHub Web editor) | src/core/Match.pm
Merge pull request #1196 from MasterDuke17/more_optimizing_the_regex_multi_for_INTERPOLATE

Simplify signatures for Regex and Associative...
MasterDuke thanks 01:18
AlexDaniel- m: react { whenever Supply.interval(0.2) { done if $_ == 5 } }; say ‘done’ 01:21
camelia done
AlexDaniel- m: react { whenever Supply.interval(-0.2) { done if $_ == 5 } }; say ‘done’
eh… well 01:22
camelia (timeout)
AlexDaniel- m: ^3 .map: "" 01:32
camelia ===SORRY!===
Cannot find method 'count' on object of type NQPMu
AlexDaniel- so here's an interesting fact 01:59
most of the snippets I've filed regression tickets for are ≈5 months old or less 02:00
it seems that people tend to run stuff that looks weird, but they don't file tickets because they just don't know that it is a regression
I went through hundreds of snippets from 2016 and there's almost nothing 02:01
so newer evals have more chances to be a regression. Weird but that's how it is 02:03
to have a regression rather
well, you get the point
“62121 snippets tested, 17020 are known to be unstable” 02:07
no, that's it, I'm done :)
MasterDuke: hey, I created this ticket RT #132306 03:10
synopsebot RT#132306 [new]: rt.perl.org/Ticket/Display.html?id=132306 [PERF] subroutine parameters, even if unused, make stuff slower ( f1($a, $, $, $, $, $) vs f2($a, $b, $c, $d, $e, $f) )
AlexDaniel- MasterDuke: actually, there's a lot of stuff that jumps at me now 04:04
for example
github.com/rakudo/rakudo/blob/ebb0...y.pm#L1399
ok $i = -1, and where is $i used?
I can't see it
Zoffix Isn't that the other way around? The `$` is optimized away, because you can't access it, so it's faster, while named ones can't be optimized the same, so they run at "normal" speed. 05:45
It's like jnthn++ pointed out in a commit comment yesterday: these optimizations are done but no one says "wow, the nameless args are optimized to be that much faster" 05:46
:)
AlexDaniel: you around? 05:59
AlexDaniel: what's with committable missing? How do I restart it now?
$ sake start-all
start-all is no longer needed, systemd should start (and restart) the bots automatically
i0.kym-cdn.com/entries/icons/facebo...859/BS.jpg
I see it pop up in px and then go down again 06:01
grrrr second day in a row can't write bug cover tests due to something 06:02
c: HEAD say 42 06:06
committable6 Zoffix, No! It wasn't me! It was the one-armed man! Backtrace: gist.github.com/7224ec8e96ed3d03ed...1e2d701d31
Zoffix c: HEAD say 42 06:07
committable6 Zoffix, No! It wasn't me! It was the one-armed man! Backtrace: gist.github.com/ae4183478b993bce11...935ca905a0
Zoffix Bunch of uncommitted crap with a syntax error in it... 06:08
bartolin whoa, just had a spectest that run to completion on jvm -- first time since 2017-06-13 06:14
it took some time, since i didn't use the evalserver ...
bartolin gave up with the evalserver for now (RT #132104)
synopsebot RT#132104 [open]: rt.perl.org/Ticket/Display.html?id=132104 [JVM] EvalServer leaks threads and memory when using Proc::Async
Zoffix :) 06:18
ugexe timotimo: now as a dual api (restful / graphql) Cro example gist.github.com/ugexe/b38416163be1...bb654c0010
Geth roast: 08ac054de0 | (Zoffix Znet)++ | S32-io/io-handle.t
Test opened filehandles get closed on exit automatically

RT#132030: rt.perl.org/Public/Bug/Display.html?id=132030
06:27
ugexe dependency recursion is pretty slow i.e. `curl -H "Content-Type: application/json" -X POST -d '{ "query" : "{ resolve(name: GraphQL) { name dependencies { name dependencies { name dependencies { name } } } } }" }' localhost:3000/graphql`
synopsebot RT#132030 [open]: rt.perl.org/Ticket/Display.html?id=132030 [TESTNEEDED] [REGRESSION] Broken Text::CSV tests and possibly other ecosystem fallout (buffering)
Geth roast: 87889891d1 | (Zoffix Znet)++ | S02-types/set.t
Set ops do not hang with Setty/Baggy/Mixie type objects

RT#131300: rt.perl.org/Ticket/Display.html?id=131300
Some ops still hang; skip() them
06:52
synopsebot RT#131300 [open]: rt.perl.org/Ticket/Display.html?id=131300 [BUG] MoarVM panic if you check for membership in undefined Set
AlexDaniel- o/ 07:13
“Bunch of uncommitted crap with a syntax error in it...” 07:14
oh… whoops…
Zoffix Fixed the error. it was a `:` marker on a method that's now a sub call
AlexDaniel- oh, ok 07:15
sorry for the uncommitted stuff, will commit now
I tend to use stuff a little bit before actually committing, which is why the bots were even taught to gist uncommitted stuff :)
but yeah maybe that's not the best way to do things
Zoffix++ 07:16
Zoffix: fwiw, over ssh it may be possible to see issues with systemctl, although I've noticed you need XDG_RUNTIME_DIR set for some reason 07:21
XDG_RUNTIME_DIR=/run/user/`id -u`; systemctl status [email@hidden.address]
something like this
if you Ctrl+R you'll be able to get this command in no time 07:22
(maybe)
Zoffix m: $_ = 'not right'; sub { $_ = Str; say so /./ }()
camelia True
AlexDaniel- samcv: oh by the way, thank you for unintentionally making me aware of mosh :) 07:29
Zoffix adds that to discussion on rt.perl.org/Ticket/Display.html?id...xn-1499602
AlexDaniel- samcv: I've been using it since then, awesome 07:30
Zoffix RT#130363
synopsebot RT#130363 [open]: rt.perl.org/Ticket/Display.html?id=130363 [@LARRY] there's no match for Any aka /./ codegens differently from m/./
AlexDaniel- I can move across networks (which I do all the time) and still have my ssh session! So awesome
if only I could run sshfs over mosh also…
I think there was one more ticket related to / / vs m/ / 07:32
Zoffix: ah-ha, here it is RT #131925 07:33
synopsebot RT#131925 [open]: rt.perl.org/Ticket/Display.html?id=131925 [BUG] [REGEX] Smartmatch against `m//` operator mishandles junctions
AlexDaniel- Zoffix: maybe merge or link them if appropriate 07:34
Zoffix AlexDaniel-: so what's the values of $*DISTRO.Str|$*KERNEL.Str ? I get True for both cases on my box 07:36
m: say so $*DISTRO.Str|$*KERNEL.Str ~~ m/linux/
camelia True
Zoffix bisect: say so $*DISTRO.Str|$*KERNEL.Str ~~ m/linux/
bisectable6 Zoffix, Bisecting by output (old=2015.12 new=ebb0521) because on both starting points the exit code is 0
Zoffix, bisect log: gist.github.com/ffe32acf6328b6634c...1698aaa42d
Zoffix, (2017-08-21) github.com/rakudo/rakudo/commit/8a...ac59f9ba83
bartolin hmm, looks like there is a missing nqp::p6bool for :bin in scr/core/Argfiles.pm (maybe also in other places): github.com/rakudo/rakudo/blob/nom/...les.pm#L16
we excpect a Bool in method new: github.com/rakudo/rakudo/blob/nom/...dle.pm#L42 07:37
this seems to work on moar (probably the isfalse is optimized somehow), but it blows up on jvm
Zoffix Ah 07:38
I'll fix it in a sec
bartolin cool, Zoffix++
I think, there are other places as well -- e.g. in CatHandle.pm 07:39
Zoffix m: use nqp; -> Bool :$bin {}(:bin(nqp::isfalse(0))) 07:40
camelia Type check failed in binding to parameter '$bin'; expected Bool but got Int (1)
in block <unit> at <tmp> line 1
Zoffix Weird that it crashes here, but not in core
m: use nqp; class { method z (Bool :$bin) {} }.z: :bin(nqp::isfalse(0))
camelia Type check failed in binding to parameter '$bin'; expected Bool but got Int (1)
in method z at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix ZofBot: dafuq?
ZofBot Zoffix, For full well he knows He cannot so precisely weed this land As his misdoubts present occasion: His foes are so enrooted with his friends That, plucking to unfix an enemy, He doth unfasten so and shake a friend
bartolin a related question: we have 'nqp::isfalse' in some places and 'nqp::not_i(nqp::istrue)' in other places -- most prominently here: github.com/rakudo/rakudo/blob/nom/...ool.pm#L77 07:41
would it make a difference to replace nqp::not_i(nqp::istrue) with nqp::isfalse? probably that gets optimized on moar, anyway? 07:42
at least on the jvm backend isfalse is implemented as 'istrue(obj, tc) == 0 ? 1 : 0' -- so using it would avoid one nqp op 07:46
Zoffix .ask lizmat any idea why this commit fixes RT#131925? Trying to figure out if the bug is proper-fixed or if it just doesn't get triggered with the OP code. github.com/rakudo/rakudo/commit/8a...ac59f9ba83
yoleaux Zoffix: I'll pass your message to lizmat.
synopsebot RT#131925 [open]: rt.perl.org/Ticket/Display.html?id=131925 [BUG] [REGEX] Smartmatch against `m//` operator mishandles junctions
samcv AlexDaniel-, you're welcome 07:48
bartolin takes back his last question. looks like the only relevant difference are a few characters spared with nqp::isfalse 08:04
Zoffix m: use nqp; class { method new (Bool :$bin) {} }.new: :bin(nqp::isfalse(0)) 08:11
camelia Type check failed in binding to parameter '$bin'; expected Bool but got Int (1)
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix m: @*ARGS = $?FILE; say $*ARGFILES
camelia IO::ArgFiles(opened on "<tmp>".IO)
Zoffix I don't get it. Why does it bypass typecheck for IO::CatHandle in github.com/rakudo/rakudo/blob/nom/...les.pm#L16 yet properly crashes above? 08:12
oh wait 08:13
m: say $*ARGFILES
camelia IO::ArgFiles(opened on IO::Special.new("<STDIN>"))
Zoffix Nope. This should be exercising that codepath
m: use nqp; say IO::CatHandle.new: $?FILE, :bin(nqp::isfalse($*IN.encoding)) 08:14
camelia IO::CatHandle(opened on "<tmp>".IO)
Zoffix wtf
bartolin it fails as expected on jvm (say $*ARGFILES)
maybe it's optimizied away for some reasons? 08:15
bartolin has no idea
Zoffix If it's optimized away, why isn't it optimized away the same for the non-IO-CatHandle?
bartolin
.oO( jnthn would know :-) )
08:16
Zoffix and "optimized away"... well... I'm giving incorrect type, so just igoring that fact is not an optimization
m: say IO::CatHandle.new: $?FILE, :bin("xdasdasdas") 08:17
camelia IO::CatHandle(opened on "<tmp>".IO)
Zoffix m: say IO::CatHandle.new: $?FILE, :bin(Mu)
camelia Type check failed in binding to parameter '$bin'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
Zoffix any :S
m: say [.file, .line, .signature] with IO::CatHandle.^lookup("new") 08:18
camelia [SETTING::src/core/IO/CatHandle.pm 40 (IO::CatHandle $: *@handles, :&on-switch, :$chomp = Bool::True, :$nl-in = { ... }, Str :$encoding, Bool :$bin, *%_)]
Zoffix m: -> *@handles, :&on-switch, :$chomp = True, :$nl-in = ["\x0A", "\r\n"], Str :$encoding, Bool :$bin { dd [$bin ]}($?FILE, :bin("x")) 08:20
camelia ["x"]
Zoffix c: releases -> *@, Int :$bin {dd [$bin]}(:bin("x"))
committable6 Zoffix, ¦releases (23 commits): «["x"]» 08:21
bartolin at least moar has an function 'optimize_istrue_isfalse' github.com/MoarVM/MoarVM/blob/mast...ize.c#L947 (but i don't know if that's relevant here)
Zoffix It's not.
The slurpy seems to cause typecheck on nameds not done
bartolin oh! 08:22
I see. so there's the difference between moar and jvm 08:23
Zoffix++ # explaining 08:24
m: 'use nqp; -> *@args, Bool :$bin {}(:bin(nqp::isfalse(0)))' 08:25
camelia WARNINGS for <tmp>:
Useless use of constant string "use nqp; -> *@args, Bool :$bin {}(:bin(nqp::isfalse(0)))" in sink context (line 1)
bartolin m: -> *@args, Bool :$bin {}(:bin(nqp::isfalse(0)))
camelia 5===SORRY!5=== Error while compiling <tmp>
Could not find nqp::isfalse, did you forget 'use nqp;' ?
at <tmp>:1
------> 3args, Bool :$bin {}(:bin(nqp::isfalse(0)7⏏5))
bartolin m: use nqp; -> *@args, Bool :$bin {}(:bin(nqp::isfalse(0)))
camelia ( no output )
Zoffix Seems there's no ticket for it, which is quite shocking no one noticed this since Christmas 08:26
AlexDaniel- this is what I was thiking about yesterday 08:28
so I'm submitting all these regression tickets, but… if nobody ever notices any of these changes, who cares? 08:29
Zoffix Filed as rt.perl.org/Ticket/Display.html?id=132307 08:30
AlexDaniel- let me guess, fixing this bug will also have a negative effect on performance? :) 08:31
Zoffix heh
m: -> *@, Int :$bin where {sleep 10; True} {say [$bin, $bin.^name]}(:bin<x>) 08:32
At least the `where` clause seems to run
camelia [x Str] 08:33
Zoffix m: -> *@, Int :$bin where {sleep 10; False} {say [$bin, $bin.^name]}(:bin<x>)
camelia Type check failed in binding to parameter '$bin'; expected Int but got Str ("x")
in block <unit> at <tmp> line 1
Zoffix Even though it shouldn't in this case :)
Geth rakudo/nom: ee0bcbd86e | (Zoffix Znet)++ | 2 files
Pass correct types to :bin

The only reason this didn't crash in the past is due to RT#132307
08:39
synopsebot RT#132307 [new]: rt.perl.org/Ticket/Display.html?id=132307 [MOAR] Slurpy positionals cause type constraints to be ignored on named args
Geth rakudo/nom: d23a9ba9d2 | (Zoffix Znet)++ | src/RESTRICTED.setting
Add IO::CatHandle to RESTRICTED setting
bartolin Zoffix: ee0bcbd86e really should help with IO related tests on jvm, thanks. I saw this error mode during your IO refactoring earlier this year. but since I wasn't able to look closer (lack of time), I just fudged the failing tests as 'todo': github.com/perl6/roast/commit/c4dc7ba410 . I should have looked closer and mentioned the issue back then ... 08:45
Geth roast: 76ed46049a | (Zoffix Znet)++ | S32-list/tail.t
Can use ints over 64-bit in .tail

Rakudo fix: github.com/rakudo/rakudo/commit/43e7b893b1 RT#132288: rt.perl.org/Ticket/Display.html?id=132288
synopsebot RT#132288 [new]: rt.perl.org/Ticket/Display.html?id=132288 [REGRESSION][9999] .tail with large negative arguments (say (4,5,6).tail(-9999999999999999999))
Zoffix wait wtf there are two .tail 9999 tickets 08:46
#130285 and #132288 08:47
AlexDaniel- don't be surprised, I do that quite often… 08:49
:S
Zoffix The "HEAD" as problem commit in the tickets isn't very helpful. HEAD when?
AlexDaniel- I think I've been including the actual head sha lately, this is an older ticket 08:50
but yeah, slap me when I do that 08:51
Geth roast: dc7447626b | (Zoffix Znet)++ | S32-list/head.t
Test .head works correctly with large negative Ints

RT#130285: rt.perl.org/Ticket/Display.html?id=130285
08:52
synopsebot RT#130285 [resolved]: rt.perl.org/Ticket/Display.html?id=130285 [9999] Unhealthy overflow in .head and .tail with huge negative numbers ( (4,5,6).tail(-9999999999999999999) )
Geth roast: bc8b66866b | (Zoffix Znet)++ | S17-procasync/stress.t
Test no "unknown errors" on reads in Proc::Async

RT#130107: rt.perl.org/Ticket/Display.html?id=130107
09:56
synopsebot RT#130107 [open]: rt.perl.org/Ticket/Display.html?id=130107 [CONC] unkown system error 0 via Proc::Async
gfldex Zoffix++ # for closing my tickets 10:01
AlexDaniel- oh, it's Sunday 10:43
MasterDuke AlexDaniel-: Sundays do seem to happen occasionally, never been able to figure out a pattern of when though... 11:36
AlexDaniel- MasterDuke: I know that the last one was on 2017-10-08_12:02:03, and today I was able to catch it on 2017-10-15_13:58:37 11:37
the pattern is unclear indeed 11:38
oh shit, that's local time
MasterDuke ah, you keep better logs than i,
AlexDaniel- so so ± something… err, ±≈13 ? 11:39
hours 11:40
MasterDuke this is why i want one timezone for the entire globe 11:44
masak .oO( kind of like Swatch Internet Time, eh? ) 12:30
MasterDuke masak: huh, i'd never heard of that before 12:31
timotimo you mean .beats? :) 12:33
i know of it from Phantasy Star Online which i had on the gamecube and couldn't play online because i didn't have a modem and my parents wouldn't have paid the subscription anyway 12:34
masak MasterDuke: I had the wrist watch and everything. 12:38
MasterDuke: one of those "what a lovely standard; now if only anyone besides used it" kind of deals :P
besides me* 12:39
MasterDuke yep, like the metric system...no, wait, it's just here in the US we don't 12:40
yoleaux Zoffix: irclog.perlgeek.de/perl6-dev/2017-...i_15301581 13:19
AlexDaniel- “PS: I am not spamming. I have studied your website, prepared an audit report and believe I can help with your business promotion” 13:33
AlexDaniel- facepalms
.tell lizmat RT weekly gist.github.com/AlexDaniel/0f20a50...d1d94002e2 13:38
yoleaux AlexDaniel-: I'll pass your message to lizmat.
AlexDaniel- wait what
even with all regression tickets, the number still went down? 13:39
Zoffix++
no really, this is awesome. Zoffix# 13:41
.tell lizmat for p6weekly (please feel free to reword as you wish): gist.github.com/AlexDaniel/7eb90c8...0bceda6c2f 14:19
yoleaux AlexDaniel-: I'll pass your message to lizmat.
Geth rakudo/js: 6 commits pushed by pmurias++ 16:20
tbrowder I’m preparing to work on table pod again and wonder what the opinion is for breaking Pod.npq into Pod.nqp and TablePod.nqp? 16:23
Geth nqp: caaee9c76e | pmurias++ | src/vm/js/const_map.nqp
[js] Add constant for atomic integers
16:36
nqp: 08c965368b | pmurias++ | 4 files
[js] Native Call Interface improvements

The NativeCall modules starts to work a little Passes t/04-nativecall/01-argless.t and t/04-nativecall/02-simple-args.t
roast: b485b3399c | usev6++ | S03-operators/set_addition.t
Disable debug helper
18:07
Zoffix man, spectest is a killer on my regular home box 18:09
Probably worth it to go through it al and move all the tests that just cover some freak-case bugs into stresstest 18:10
Worse still it uses all the resources so I almost can't do anything else (like play some games) 18:12
Files=1227, Tests=75670, 699 wallclock secs (13.52 usr 2.41 sys + 2399.60 cusr 198.40 csys = 2613.93 CPU)
And a failure. So I might need to make a change and do it again. half hour for a simple fix
timotimo ugh :(
you know ...
with coverage data from every test file ... 18:13
we could compare what lines were touched in the core setting by any given change and pull the tests that use that area of code to the front
dogbert17 Zoffix: time this one, t/spec/S17-promise/lock-async.t 18:16
Zoffix takes ages
dogbert17 yep
BenGoldberg You might even make a test variant which *only* runs those test which should be affected by a given change. 18:17
timotimo BenGoldberg: i'd think that's difficult to properly figure out
dogbert17 a couple of weeks ago I timed all files in spectest 18:18
Geth roast: 220e202a5e | (Zoffix Znet)++ | S32-io/pipe.t
Fix broken Proc piping test

The test is not part of 6.c-errata.
  .close on a pipe returns the Proc and sunk Proc awaits the
process to finish. This causes proc1 in the test to finish off before the second proc had a chance to grab its pipe.
The only reason this test was passing in the past is due to a bug where only the .close on the last open handle actually returned a Proc
18:24
dogbert17 S15-normalization/nfc-concat.t is also quite slow
Geth rakudo/nom: 74328278f8 | (Zoffix Znet)++ | src/core/Proc.pm
Fix IO::Pipe.close not always returning the Proc

Currently, only the .close on the last open handle returns the Proc object, the rest return Nil, and since using Proc in Bool context is a way to check whether it was successful, the Nil interferes with such a test, giving a false negative.
18:25
timotimo good catch 18:26
Geth roast: 436eb33e04 | (Zoffix Znet)++ | S29-os/system.t
Test all of Proc's IO::Pipe's return the Proc

Rakudo fix: github.com/rakudo/rakudo/commit/74328278f8
Zoffix .tell jnthn would you just double check that this commit doesn't undo something that was made by design github.com/rakudo/rakudo/commit/74328278f8 ? It makes such setups fail for example, 'cause sunk Proc is awaited on: github.com/perl6/roast/commit/220e202a5e 18:27
yoleaux Zoffix: I'll pass your message to jnthn.
Zoffix Files=1, Tests=39, 158 wallclock secs ( 0.03 usr 0.00 sys + 447.26 cusr 2.51 csys = 449.80 CPU) 18:31
Looks a lot like the ZOFVM test time.... that's for lock-async.t
timotimo lock-async requires to produce a bunch of load on the system 18:32
dogbert17 I believe there's a scheduler problem lurking in that test file, changing the 'xx 4' lines at the end to say 'xx 2' make quite a bit of difference
*makes
Zoffix and the test is already optimized. Lower than 10_000 iterations doesn't catch the bug, were there no locking 18:40
dogbert17: that halves the number of work, so I'm not surprised :) 18:41
doesn't always catch it at least.
dogbert17 it does, but the time to run goes done much more 18:44
*down
I remember it going down from ~2min to ~2sec 18:46
Zoffix: with 'xx 2' on the last two test I get a test time for the entire file as: real 0m3.996s 18:49
Geth roast: 37cc7eaacc | (Zoffix Znet)++ | 3 files
Improve roast run time by moving Lock Async tests

  - Move the lengthy lock stress tests to stresstest
   - Fewer iterations don't catch failure mode all the time
   so we can't reduce them, but move the test outta spectest
  - Split up the two long stresstest into separate files
   - Their total run time is equal to total stresstest time on
   a 24-core box, so by splitting them up we can at least
   have them taken care of by separate cores if available
18:52
rakudo/nom: 1706194c72 | (Zoffix Znet)++ | t/spectest.data
Add extra proc async tests

From github.com/perl6/roast/commit/37cc7eaacc
Zoffix dogbert17: no idea why 18:53
dogbert17 perhaps jnthn has an idea 18:54
Zoffix dogbert17: also, I don't think channel stress tests were fixed were they? Remember, when we had some hanging tests recently due to scheduler work (which were fixed) and channel stress test was taking ages (which I don't recall if it was fixed or not) 18:55
dogbert17 I remenber jnthn fixing at least one slow running test a week or two ago 18:56
Zoffix ok
err s/proc async tests/lock async tests/; 18:57
ZofBot: too much async!
ZofBot Zoffix, What manner of man is he? Host
dogbert17 Zoffix: your change brought spectest time (on my system) down from 310 to 285 18:59
Zoffix ZOFVM: Files=1280, Tests=152673, 151 wallclock secs (21.51 usr 3.62 sys + 3221.43 cusr 183.80 csys = 3430.36 CPU) 19:03
Didn't affect stresstest at all, but I recall there were other files that take ages
Need a more sssssssssssssssssystematiccccccccccccccccccccccccccccccccccccccccccccccccccc approach and measure e 19:04
ach file
^^ can't even type while spectest is running on my local box :()
hhhhhhhhhhhm weird. t/spec/S12-construction/destruction.t on my 24-core VM now flops with passssssssssssssssssssssssssssssssssssing TODOs 19:05
dogbert17 Zoffix: how long does S15-normalization/nfc-concat.t take on your box
Zoffix lol wtf :) my keyboar'ds weird 19:06
dunno
dogbert17 I guess 40-50 sec 19:07
Zoffix local spectest time now: Files=1227, Tests=75680, 550 wallclock secs (13.26 usr 2.73 sys + 1879.07 cusr 186.15 csys = 2081.21 CPU) 19:08
with TEST_JOBS=7 on 4-cpu box 19:09
Zoffix tries 4
dogbert17 that was a nice improvement
Zoffix 548s, so no real dif 19:20
Geth rakudo: MasterDuke17++ created pull request #1197:
Improve wrong arity error for anonymous subs
20:59
rakudo/nom: 084078e1c3 | MasterDuke17++ | src/Perl6/Metamodel/BOOTSTRAP.nqp
Improve wrong arity error for anonymous subs

If the routine doesn't have a name, use '<anon>' instead.
21:01
rakudo/nom: e52c8affa3 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/Perl6/Metamodel/BOOTSTRAP.nqp
Merge pull request #1197 from MasterDuke17/RT132291

Improve wrong arity error for anonymous subs
synopsebot RT#132291 [new]: rt.perl.org/Ticket/Display.html?id=132291 [LTA] Too few positionals passed to '' (for [:a] X [:b] -> ($i, $j) { })
buggable New CPAN upload: App-Bob-0.5.1.tar.gz by TYIL cpan.metacpan.org/authors/id/T/TY/...5.1.tar.gz
Geth roast: a5b3bb1669 | (Zoffix Znet)++ | 2 files
Replace test for RT#129291

  - At some point original test was reduced to 100 iterations, which
   does not appear to reliably exercise the bug
  - The original test does not run on Win32
Replace by test that uses `echo` instead, which is available on Win32, and runs in fewer iterations while still exercising the bug.
21:05
synopsebot RT#129291 [open]: rt.perl.org/Ticket/Display.html?id=129291 problems when run()ning two procs and passing the :out of one to the :in of the other
AlexDaniel- Zoffix: hey, maybe we can speed up the tests by asking prove to reorder them a little bit 21:14
one second I'll find how to do that… 21:15
Zoffix ? 21:16
It already spaces out slow tests.
AlexDaniel- oh really 21:17
wait, where? 21:18
--state=slow,save 21:21
Zoffix AlexDaniel-: yup: gist.github.com/zoffixznet/809086f...pl-L45-L74
You have to manually mark slow test files in t/spectest.data
And t/harnes5 and t/harness6 will spread them out evenly through the run
AlexDaniel- hmmm
Zoffix And in the past I tried teaching it a bit smarter algo, but that didn't do anything for my 24-core stresstest runs (possibly 'cause there's a handlful of files that just take long time) 21:22
AlexDaniel- well, if you pass --state=slow,save to prove, then it will run slow tests first. Maybe that's not the best strategy, right 21:23
Zoffix How does it know which tests are slow?
AlexDaniel- (and the slowness is determined by your previous run)
Zoffix Ah
AlexDaniel- there's another option “hot” which makes it run those tests that failed first 21:24
which is amazing for TDD I think
Zoffix I doubt there's much to gain in simply reordering the tests. You still have to do the same work, the only win will be from whatever little work is done at the end on fewer cores than you have available.
AlexDaniel- ok then 21:25
Zoffix wouldn't mind being proven wrong :) 21:26
AlexDaniel- Zoffix: well that's easy to test, just add “--state=slow,save” to the prove command and it should do the thing 21:27
then run once, it will do it in normal order
and the second time it will reorder it
I don't think I can try it myself right now
or… maybe not that easy 21:29
does it even use prove? I thought it does… 21:30
:S
Zoffix nope, but TAP::Harness it uses likely has similar options to prove 21:31
dogbert17 0:30.94elapsed t/spec/S06-operator-overloading/infix.t 21:32
0:36.94elapsed t/spec/S17-supply/batch.t
0:37.31elapsed t/spec/S06-operator-overloading/circumfix.t
0:43.78elapsed t/spec/S15-normalization/nfc-concat.t
these are the four slowest tests on my system 21:33
followed by S32-io/lock.t, S17-supply/unique.t, S06-operator-overloading/sub.t, S15-nfg/concat-stable.t, S32-exceptions/misc.t and S29-context/sleep.t 21:34
MasterDuke t/spec/S15-normalization/nfc-concat.t has 1823 tests in it. probably could be split into a couple files
AlexDaniel- nope, I don't see that option
Zoffix dogbert17: would be worth checking if those all are marked as slow in rakudo's t/spectest.data 21:35
dogbert17 let's see 21:36
Zoffix The space-out-slow-tests thing we do don't make much sense to me. Wouldn't you wanna run all the slow tests first and let the faster tests fill in the gaps at the end rather than spacing slow tests out and leaving $n number of slow tests run slowly closer to end
s/closer to end$/when the spectest gets closer to end/; 21:37
dogbert17 nfc-concat is marked as # moar 21:38
timotimo Zoffix: consider that the slow tests aren't more likely to break than short tests
by spacing tests out you can get the expected latency to the first test failure down a little bit
AlexDaniel- … also also increase the overall clock time 21:39
Zoffix (prolly tomorrow). I'm gonna add .buffer method that lets users modify IO::Handle and kin's buffer size. Just gonna be a Proxy that uses whatever the name of the internal method to do that does. Wanna squeeze this knob into the release, which will be Star release and possibly last 6.c Star release.
AlexDaniel- k 21:40
releasable6: status
releasable6 AlexDaniel-, Next release in 5 days and ≈21 hours. 1 blocker. Changelog for this release was not started yet
AlexDaniel-, Details: gist.github.com/032ac3ad4c0e0132b8...588933013e
timotimo i just ordered a replacement for my ergonomic keyboard ... so i can have a keyboard with a tab key again
Zoffix timotimo: no, the latency is the same, as test failures are reported right away and not at the end of a test file run. Also, don't really care about that as 80% of the time I run it to a complete end.
timotimo no, test failures are reported when tests fail 21:41
so by running more tests earlier you get to the failing test faster on average
dogbert17 unmarked: S32-exceptions/misc.t, S06-operator-overloading/sub.t, S06-operator-overloading/infix.t and S06-operator-overloading/circumfix.t 21:42
AlexDaniel- and if we were using prove with “hot” we'd be getting to these failing tests instantly the second time you run it :)
Zoffix timotimo: right, so a slow file with 1000 tests and first test failing will report right away just the same as a fast file with 3 tests and first test failing.
jnthn Zoffix: +1 on the .buffer things, only thing I wonder is if I shoulda called the parameter (and thus the method) output-buffer, so people don't thing they're setting an input buffer size
yoleaux 18:27Z <Zoffix> jnthn: would you just double check that this commit doesn't undo something that was made by design github.com/rakudo/rakudo/commit/74328278f8 ? It makes such setups fail for example, 'cause sunk Proc is awaited on: github.com/perl6/roast/commit/220e202a5e
Zoffix Alright. I'll think about that too.
jnthn We actually hardcode the input buffer size a the moment 21:43
*at
timotimo slow test files don't actually always have more tests than fast ones
jnthn So could make that configurable too
Zoffix OK
jnthn Also there's demand for making it possible to turn off newline translation on a handle too (sure there's an RT for it) 21:44
it's done with :!translate-nl elsewhere, iirc (I think on Proc::Async)
I knew that was wanted, and did the stuff to make sure we can implement it with just a little code in CORE.setting
(Not suggesting this all for Zoffix++ :)) 21:45
Zoffix )
*:)
jnthn Will hopefully make some more progress on the hyper/race stuff this week 21:46
timotimo goes to bed early today 21:47
jnthn 'night, timotimo 21:52
timotimo gnite jnthn :) 21:53
AlexDaniel- weeee! Hyper/race! 21:58