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/o7bHvwm18wUndeclared 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 |