buggable | New CPAN upload: App-Bob-0.5.0.tar.gz by TYIL cpan.metacpan.org/authors/id/T/TY/...5.0.tar.gz | 04:01 | |
New CPAN upload: App-Bob-0.4.0.tar.gz by TYIL cpan.metacpan.org/authors/id/T/TY/...4.0.tar.gz | 04:11 | ||
New CPAN upload: App-Cpan6-0.6.2.tar.gz by TYIL cpan.metacpan.org/authors/id/T/TY/...6.2.tar.gz | 06:01 | ||
[Tux] | This is Rakudo version 2017.09-432-gd6a9edacf built on MoarVM version 2017.09.1-594-gb9d3f6da | 07:00 | |
csv-ip5xs 1.197 - 1.219 | |||
test 8.509 - 8.513 | |||
test-t 3.164 - 3.184 | |||
csv-parser 0.863 - 0.903 | |||
lizmat | Files=1227, Tests=75680, 320 wallclock secs (14.85 usr 5.20 sys + 2216.59 cusr 210.91 csys = 2447.55 CPU) | 08:13 | |
samcv | . | 08:19 | |
releasable6, status | 08:22 | ||
releasable6 | samcv, Next release in 4 days and ≈10 hours. 1 blocker. Changelog for this release was not started yet | ||
samcv, Details: gist.github.com/8ace9a3240e8fda055...3960532702 | |||
samcv | i've been taking a break for a bit. let me know if there's anything that needs to be dealt with before release | 08:23 | |
jnthn | morning o/ | 08:56 | |
moritz | \jnthn | 08:58 | |
jnthn | Oh no, I've been captured! | ||
moritz exits the scope | |||
Geth | roast: c95355583a | (Jonathan Worthington)++ | S02-types/WHICH.t HyperWorkBuffer is going away This was the only mention of it in the whole test suite. It was an implementation details of the previous hyper/race mechanism, which is being replaced. |
09:03 | |
jnthn | So, S03-metaops/eager-hyper.t passes in full, as does S07-hyperrace/hyper.t | 09:10 | |
(With my branch) | |||
Geth | nqp: 872ca4c380 | (Samantha McVey)++ | t/nqp/038-quotes.t Add 10 more q and qq quote tests |
09:11 | |
jnthn | In other words, my new impl straight off passes all the spectests we have for hyper and race :) | ||
The bad news is that we don't have many of those | 09:12 | ||
gfldex | you could try to golf gist.github.com/gfldex/b9914d412c8...d45726f2b2 a little to get a proper stresstest | ||
whereby the hitchance is only 10% | 09:14 | ||
I may have a better test but need to rush to work now. | 09:15 | ||
gfldex rushes | |||
jnthn | gfldex: I've got 9 hyper/race RTs to go through, all of which are already fairly golfed | 09:16 | |
So with luck it'll be one of those | |||
Geth | roast/hyper-race-rework: bba5083af5 | (Jonathan Worthington)++ | 3 files Untodo hyper/race tests passing with new impl |
09:29 | |
roast/hyper-race-rework: a393f41c62 | (Jonathan Worthington)++ | 2 files Add tests for all broken examples in RT #127452 |
09:47 | ||
synopsebot | RT#127452 [open]: rt.perl.org/Ticket/Display.html?id=127452 [CONC] hyper is very broken, *sometimes* it returns nothing | ||
jnthn | So, that ticket seems fixed already | ||
(All the tests I added could fail on HEAD) | |||
Geth | rakudo/hyper-race-rework: f7ef1fc9f1 | (Jonathan Worthington)++ | 2 files Remove leftover debug code |
10:11 | |
rakudo/hyper-race-rework: cef4806ff6 | (Jonathan Worthington)++ | 3 files Implement sink on HyperSeq and RaceSeq |
|||
roast/hyper-race-rework: 857fe02933 | (Jonathan Worthington)++ | 2 files Tests to cover RT #129234 |
10:12 | ||
synopsebot | RT#129234 [new]: rt.perl.org/Ticket/Display.html?id=129234 [CONC] `.hyper` and `.race` resume after exceptions | ||
Geth | rakudo/hyper-race-rework: ea51d19bbd | (Jonathan Worthington)++ | src/core/RaceSeq.pm Add forgotten `does Sequence` on RaceSeq |
10:22 | |
roast/hyper-race-rework: 342bff10bb | (Jonathan Worthington)++ | 2 files Tests to cover now-passing RT #128084 |
10:23 | ||
synopsebot | RT#128084 [new]: rt.perl.org/Ticket/Display.html?id=128084 [CONC][BUG] `.hyper/.race.map(&f)` produces an empty sequence if `&f` is a multi-sub | ||
Geth | roast/hyper-race-rework: 854a53b7ce | (Jonathan Worthington)++ | 2 files Tests for RT #131865 |
10:30 | |
synopsebot | RT#131865 [new]: rt.perl.org/Ticket/Display.html?id=131865 [REGRESSION] Looping over a HyperSeq in sink context does nothing (for <a b c>.hyper { say 2 }) | ||
Geth | roast/hyper-race-rework: ee8c215ea0 | (Jonathan Worthington)++ | 2 files Tests for RT #130576 |
10:40 | |
synopsebot | RT#130576 [open]: rt.perl.org/Ticket/Display.html?id=130576 [CONC] .race & .hyper break [+] (1..100) | ||
Geth | roast/hyper-race-rework: 6713a08d99 | (Jonathan Worthington)++ | S07-hyperrace/stress.t Add some hyper/race stress tests |
10:48 | |
rakudo/hyper-race-rework: 374ee3e264 | (Jonathan Worthington)++ | t/spectest.data Run hyper/race stress tests |
|||
jnthn | Merge of the branches in rakudo and roast would let us close 6 RTs regarding hyper/race | 10:49 | |
Zoffix | \o/ | 10:51 | |
timotimo | re | ||
jnthn | RT #125978 is likely still busted because it boils down to the concurrent EVAL bugs, which I can reproduce without hyper/race | ||
synopsebot | RT#125978 [open]: rt.perl.org/Ticket/Display.html?id=125978 [CONC] [SEGV] (and other crashes) when using .hyper | ||
jnthn | Hmm, the gist from gfldex seems to still have issues | 10:55 | |
Not immediately clear why | 10:56 | ||
Hm, though I figured it but no. Lunch time, then got meetings/other job, so will have to review the bug hunt later. | 11:04 | ||
bbl | |||
*continue the bug hunt | 11:05 | ||
.tell AlexDaniel the new hyper/race implementation passes all the tests that the previous one did plus all the todo'd ones plus a load of new ones I've added in a branch that'd let us close 6 RTs; how do you feel about merging it, given we're close to release? | |||
yoleaux | jnthn: I'll pass your message to AlexDaniel. | ||
Geth | roast: dfffc0d7f4 | (Elizabeth Mattijsen)++ | S03-operators/set_multiply.t Fix copy-pasto in comment |
11:31 | |
roast: e53d2199ef | (Elizabeth Mattijsen)++ | S02-types/set.t Unfudge tests for RT #131300 |
|||
synopsebot | RT#131300 [open]: rt.perl.org/Ticket/Display.html?id=131300 [BUG] MoarVM panic if you check for membership in undefined Set | ||
Geth | rakudo/nom: 8a88d14905 | (Elizabeth Mattijsen)++ | 10 files Streamline set operators handling of Any,Any - this fixes RT #131300 - basically add Any,Failure:D and Failure:D,Any candidate for each op - because coercions *can* fail - replacy Any,Any candidate with one that simply coerces the correct way - remove some Any,QuantHash / QuantHash,Any candidates - to prevent MMD lookup ambiguities |
11:34 | |
jnthn | OK, no meeting it turns out. So, more hyper/race today :) | 12:05 | |
dogbert2 | yay | 12:10 | |
if no one else has already done it I could run some 'nasty' spectest on your branch | |||
dogbert2 does so | 12:13 | ||
timotimo | otherwise you'd have to have raced through the meeting, though perhaps the other attendees might object to you being so hyper | 12:27 | |
dogbert2 | m: use Test; is-deeply (4,5,6,7).tail(-2**100), (), "can use ints over 64-bit in .tail" # fails on my 32-bit system | 12:31 | |
camelia | ok 1 - can use ints over 64-bit in .tail | ||
timotimo | dogbert2: what does it return from the tail call? or does it blow up? | 12:35 | |
lizmat | Zoffix: re RT #132313, I was considering stashing the string of the literal Rat somewhere for this purpose | 12:36 | |
synopsebot | RT#132313 [open]: rt.perl.org/Ticket/Display.html?id=132313 .gist of some Rats does unnecessary Numification (say 1.111111111111111111111) | ||
lizmat | Zoffix: otherwise, I'm looking to your solution :-) | ||
*forward | |||
Zoffix | lizmat: TimToady suggested basically that: generate a RatStr for rat literals with denoms >64 | 12:41 | |
m: say <1.111111111111111111111>.^name | 12:42 | ||
camelia | RatStr | ||
Zoffix | m: say <1.111111111111111111111>.gist | ||
camelia | 1.111111111111111111111 | ||
lizmat | ah, cool, yeah :-) | ||
Zoffix | Tho looking at guts of Rat, that won't work. If we do the strict thing of having Rat type always have a uint64 denominator. I kinda had this bug on ice in my private stash until fixing uint64 and making Rat have uint64 denom and seeing what explodes. | 12:47 | |
Kinda regret that ticket was filed :/ | |||
m: say 1.111111111111111111111111111111111111111111111111111111111.nude | |||
camelia | (1111111111111111111111111111111111111111111111111111111111 1000000000000000000000000000000000000000000000000000000000) | ||
Zoffix | 'cause the problem is this ^ not .gist | ||
lizmat | m: dd &infix:<<+>> # works as expected | 12:49 | |
camelia | Sub+{is-pure}+{Precedence} infix:<+> = sub infix:<+> (Mu $?, Mu $?) { #`(Sub+{is-pure}+{Precedence}|26608096) ... } | ||
lizmat | m: my $a = "&infix:<<+>>"; dd $a; dd ::($a) # this doesn't | ||
camelia | Str $a = "\&infix:<<+>>" Failure.new(exception => X::NoSuchSymbol.new(symbol => "\&infix:<<+>>"), backtrace => Backtrace.new) |
||
Geth | rakudo/hyper-race-rework: ae9de58246 | (Jonathan Worthington)++ | src/core/Rakudo/Internals/HyperPipeline.pm Remove some debugging leftovers |
12:50 | |
Zoffix | 'cause &infix:<<+>> gets normalized to &infix:<+> | ||
m: my $a = "&infix:<+>"; dd $a; dd ::($a) | |||
camelia | Str $a = "\&infix:<+>" Sub+{is-pure}+{Precedence} infix:<+> = sub infix:<+> (Mu $?, Mu $?) { #`(Sub+{is-pure}+{Precedence}|34079200) ... } |
||
jnthn | ::(...) would need the normalized name | ||
Zoffix | m: my $a = BEGIN $*W.canonicalize_pair("&infix:", "+").substr: 1; dd $a; dd ::($a) | 12:53 | |
camelia | Str $a = "\&infix:<+>" Sub+{is-pure}+{Precedence} infix:<+> = sub infix:<+> (Mu $?, Mu $?) { #`(Sub+{is-pure}+{Precedence}|33190640) ... } |
||
Zoffix | heh :) | ||
dogbert2 | timotimo: Cannot unbox 101 bit wide bigint into native integer | 12:55 | |
Zoffix | dogbert2: are you sure you built latest and greatest rakudo? | 12:56 | |
dogbert2: this is the same as the test you had problems with last week. These cover freshly-fixed bugs and you need latest rakudo for the tests to pass | |||
m: constant $a = "&infix" ~ $*W.canonicalize_pair: "", "+"; dd $a; dd ::($a) | 12:57 | ||
camelia | "\&infix:<+>" Sub+{is-pure}+{Precedence} infix:<+> = sub infix:<+> (Mu $?, Mu $?) { #`(Sub+{is-pure}+{Precedence}|29459152) ... } |
||
jnthn | dogbert2: And if you're testing my branch, it's missing some commits from nom | ||
(I see those failures too, presume it's just 'cus the branch is behind) | |||
Geth | roast: b7c9f9ab1b | (Elizabeth Mattijsen)++ | S02-types/set.t Streamline RT #131300 tests - don't use eval-lives-ok |
12:59 | |
synopsebot | RT#131300 [resolved]: rt.perl.org/Ticket/Display.html?id=131300 [BUG] MoarVM panic if you check for membership in undefined Set | ||
Geth | rakudo/hyper-race-rework: 82a38c291b | (Jonathan Worthington)++ | src/core/Channel.pm Don't lose original location of a Channel error |
13:01 | |
timotimo | i gots my new keyboard | ||
dogbert2 | jnthn, Zoffix: I'm running jnthn's branch | 13:03 | |
jnthn | Well, that's errors improved... | 13:14 | |
gist.github.com/jnthn/dc43a3154c49...a6d2bfa91e | |||
jnthn pokes Geth | 13:17 | ||
Oh well, I did a commit that improved erorr reporting to be as I showed | 13:19 | ||
Geth | rakudo/hyper-race-rework: ad0dd8e7d5 | (Jonathan Worthington)++ | 3 files Improve hyper/race errors Include the location where the hyper/race operation was initiated as well as the location where the error occurred in the worker, with an explanation. |
13:21 | |
jnthn | Alas, the better errors haven't made the seq bug obvious... | 13:34 | |
dogbert2 | jnthn: curveball, can there be a connection between the bug and RT #130796 ? | 13:46 | |
synopsebot | RT#130796 [new]: rt.perl.org/Ticket/Display.html?id=130796 [CONC] Data races somewhere in SEQUENCE and/or continuation resuming code | ||
jnthn | I don't think so | 13:51 | |
dogbert2 | ok, which bug are you trying to find? | 13:54 | |
jnthn | The one in gfldex' gist | ||
dogbert2 looks | |||
the gist spits out 146001 | 14:00 | ||
jnthn | Yeah, run it a few times | 14:01 | |
It doesn't fail every time | |||
dogbert2 | now I got 'This Seq has already been iterated, and its values consumed' | ||
jnthn | Yup, tht's the problem | 14:02 | |
Still trying to get to the bottom of what's going wrong | 14:04 | ||
Did improve error reporting for hyper/race along the way though :) | |||
dogbert2 | cool, the new implementation is already a lot better than before | ||
m: say [+] (1..100).race | 14:05 | ||
camelia | 0 | ||
dogbert2 | stuff like the above works now | 14:06 | |
jnthn | Yeah, already got tests for that in the roast branch | ||
Zoffix | dogbert2: then S02-types/set.t will likely hang for hyper-race-* branch. As the tests were unfudged for a fix that just landed | 14:09 | |
dogbert2 | Zoffix: good to know | 14:14 | |
jnthn: if I run the code with RAKUDO_SCHEDULER_DEBUG I get messages like '[SCHEDULER] Heuristic queue progress deadlock situation detected'. Are these to be expected? | 14:16 | ||
timotimo | we should be able to put in a flag that saves a backtrace of where a seq first got exhasted, right? might have to put that in many places, but it could be quite a valuable tool - for performance reasons though it should be a setting-compile-time thing | ||
dogbert2 notes that when running with asan the end result sometimes differ from 146001 | 14:18 | ||
jnthn | timotimo: I've done that, and just added logging the thread ID | 14:22 | |
Hacked in rather than so neatly though :) | |||
So it turns out that the threads race over the Seq but how on earth | |||
ohhhh | 14:33 | ||
duh | 14:34 | ||
So | |||
my @l = 1, ½, (1/3).Num, ∞, :1a, [:2b, c => {:4e, :5f} ], <a b c>.Seq; | |||
It does that | |||
Then | |||
my @l2 = |@l xx $repetitions; | |||
All of those now reference the same Seq | |||
All the repetitions, that is | |||
.cache on a Seq is atomic/thread-safe | |||
gah, | 14:35 | ||
is *not* | |||
Why didn't I spot that sooner :/ | |||
So yeah, it's not a hyper/race bug at all | |||
m: loop { my $s = <a b c>.Seq; await (start $s.cache), (start $s.cache) } | 14:36 | ||
camelia | (signal XCPU) | ||
timotimo | this is an X CPU | 14:38 | |
there should be something performance-friendly we can do to make it barf loudly when seqs are concurrently cached | 14:41 | ||
not a lock, but perhaps an atomic var or something? | |||
jnthn | Atomic vars ain't *that* cheap | ||
timotimo | mhm | 14:42 | |
if we only check once at beginning and end? | |||
could of course also be reserved for a compile-time-switched debug mode | 14:44 | ||
jnthn | Anyway, I think that explains what's going on | ||
timotimo | you know ... if the env hash is fixed at beginning-of-program-time, and we cache it, we could actually replace accesses to it with constants in spesh and throw out branches that way | 14:45 | |
like, use that to keep in or throw out debugging code that can be env-var-switched at run time | |||
jnthn | .tell gfldex I figured it out, it's not a hyper/race bug after all, but rather that there is a race because the same Seq is re-used many times, and so threads race to .cache it, which is not a threadsafe operation. Do it as `my @l2 = |(1, ½, (1/3).Num, ∞, :1a, [:2b, c => {:4e, :5f} ], <a b c>.Seq) xx $repetitions;` and things work ('cus it thunks the LHS of xx and generates separate Seqs) | 14:48 | |
yoleaux | jnthn: I'll pass your message to gfldex. | ||
jnthn | Semantics question! | 14:54 | |
What should for do? | |||
;) | |||
So, given | |||
for something() { } | |||
Should you be able to look at that code and know that your for loop will execute sequentially? | 14:55 | ||
And you'd have to write hyper for something() { } or race for something() { } to get the other thing? | |||
timotimo | oh, because something might return a HyperSeq | 14:56 | |
jnthn | Right | ||
timotimo | requiring you to re-state that hyper's fine there might be a good idea since it's the block after that that will be impacted | 14:59 | |
jnthn | Yeah | ||
timotimo | since an api change in something() could bust your code, too | ||
jnthn | Yes, that kind of "at a distance" thing is my concern. | ||
perlpilot | If restating the hyperness is a good thing (I think it is), what would `for something() { }` do when something() returns a HyperSeq? Will it "demote" it to a regular Seq? Or something else? | 15:01 | |
jnthn | It'll just obtain the .iterator | 15:02 | |
So, it's consume the results of the parallel operation sequentially | |||
perlpilot | ah. ok. | 15:03 | |
makes sense. | |||
jnthn | ooh, found a bug | ||
Zoffix | What happens with something().map({block;})? | ||
huggable: hyper | |||
huggable | Zoffix, New hyper/race implementation exploration: gist.github.com/jnthn/754292747161...207d077d74 | ||
Zoffix | um, not that | ||
6guts.wordpress.com/2017/03/16/con...semantics/ | |||
jnthn | Zoffix: .map is interpreted in the language of the object you call it on | 15:04 | |
So if it's a HyperSeq or RaceSeq, it chains another parallel operation onto the chain of them | |||
Zoffix | so we'll no longer have a "for is a map" thing? | ||
jnthn | Well, or at least we'll change it to "it's a .serial.map" | 15:05 | |
Though today we already don't implement many cases of for by calling map | |||
for 1..100 { } # special cased to a while loop | |||
mst | this is why I liked 'foreach' because it implied you could have a parallel version called 'forall' | 15:06 | |
jnthn | Other simple cases for for are compiled into code that works with the iterator directly, to allow block inlining | ||
mst | of course everybody else hated typing the extra four characters | ||
jnthn | forall wouldn't convey hyper or race semantics, though | ||
[Coke] | froosh. | 15:07 | |
Zoffix | If my something().map block will break if something()'s API changes and my something().grep block will break, then I don't see why the line gets drawn for `for something()` | ||
`hyper for something()` that's a new syntax innit? | |||
jnthn | `hyper for blah() { }` and `race for blah() { }` make those semantics clear | ||
No | |||
lazy for blah() { } is already a thing :) | |||
m: hyper for 1..100 { } | 15:08 | ||
camelia | ( no output ) | ||
jnthn | Already parses | ||
No idea what it compiles into :P | |||
Zoffix | m: my @a = lazy for rand {.say} | ||
camelia | 0.58192547563502 | ||
Zoffix | doesn't seem to work | ||
m: my @a = lazy(for rand {.say}) | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1) at <tmp>:1 ------> 3my @a = lazy(for 7⏏5rand {.say}) |
||
jnthn | The reason to draw the line with `for` is because typically, `for` is considered an imperative construct | 15:11 | |
While map is considered a functional one | |||
perlpilot | +1 | ||
Zoffix | ok | ||
jnthn | Fun project for the future: figure out if we can somehow do smart/dynamic decision-making on batch size. | 15:14 | |
dogbert2 | jnthn: have you looked at RT #125978 | ||
synopsebot | RT#125978 [open]: rt.perl.org/Ticket/Display.html?id=125978 [CONC] [SEGV] (and other crashes) when using .hyper | ||
jnthn | Yeah, but that's the one that is failing 'cus of EVAL + threads | 15:15 | |
So no amount of fixing hyper/race will help it | |||
Provided RT #127364 is written so as not to fall into the sequential for trap then it's faster with :4096batch | 15:22 | ||
synopsebot | RT#127364 [rejected]: rt.perl.org/Ticket/Display.html?id=127364 [PERF] .race makes code run 5 times slower | ||
jnthn | oh, though it's rejected...wat... | 15:23 | |
timotimo | hmm, how hard is it to try out values for batches and re-adjust dynamically? | ||
jnthn | Perhaps not terribly hard | 15:25 | |
Maybe we can do it with timing | |||
And have some idea of what "too short" is | 15:26 | ||
jdv79 | jnthn: i'm gonna guess based on your comment on that ticket of mine that you can't repro? | 15:27 | |
jnthn | I could, I just had some memory of a mention that the problem could occasionally come up under the previous scheduler | 15:30 | |
If so, it'd change the direction I'd look in | 15:31 | ||
buggable | New CPAN upload: Sparrowdo-Prometheus-0.0.1.tar.gz by MELEZHIK cpan.metacpan.org/authors/id/M/ME/...0.1.tar.gz | ||
jdv79 | it didn't for me. maybe someone else. | 15:36 | |
jnthn | OK, so probably it is something about scheduling. | ||
jdv79 | ah | ||
jnthn | I musta remembered wrong | 15:37 | |
jdv79 | is there an easy way to tell which thread to poke at besides guessing based on a bt of each? | ||
i have no idea how to debug multithreaded stuff | |||
i should probably read some stuff on the subject | 15:38 | ||
Geth | rakudo/hyper-race-rework: 41729e93ec | (Jonathan Worthington)++ | src/core/Rakudo/Internals/HyperRaceSharedImpl.pm Fix bugs in sink of HyperSeq/RaceSeq Remember to mark batches consumed, and construct the Sink correctly. |
15:59 | |
roast/hyper-race-rework: 4c5ef0c10f | (Jonathan Worthington)++ | 2 files Test sink of HyperSeq/RaceSeq |
16:00 | ||
jnthn | If anyone would like to help with hyper/race, there are tasks both easy and adventurous :) | 16:11 | |
I've updated docs.google.com/spreadsheets/d/1kp...sp=sharing | |||
There's lots of LHF test writing; everything marked "Needs tests" just needs a test writing in S07-hyperrace/hyper.t and S07-hyperrace/race.t | 16:12 | ||
.Int and .Numeric are LHF, just delegate to .cache like it says and add tests | 16:13 | ||
Geth | rakudo/hyper-race-rework: d74ba04135 | (Jonathan Worthington)++ | 2 files More direct hyper -> race and vice versa No need to go via a sequential iterator and bottleneck the chain. |
||
roast/hyper-race-rework: bdb558a753 | (Jonathan Worthington)++ | 2 files Test hyper -> race, race -> hyper |
|||
jnthn | Some others are a bit more fun | 16:14 | |
Geth | roast/hyper-race-rework: 1ee99dbeef | (Jonathan Worthington)++ | 2 files Tests for .Seq on HyperSeq and RaceSeq |
||
jnthn | Since they require writing a pipeline components | ||
s/a// | |||
ugexe | what causes .pick to need to see all items first? | 16:18 | |
Geth | rakudo/hyper-race-rework: 836761129c | (Jonathan Worthington)++ | 2 files HyperSeq/RaceSeq are never lazy |
||
roast/hyper-race-rework: 79f4e97c35 | (Jonathan Worthington)++ | 2 files Test .is-lazy method on HyperSeq and RaceSeq |
|||
jnthn | I'm the wrong person to ask about probability, but I figure if it doesn't know how many items there are in total it can't do a fair job of picking? | 16:19 | |
Enough on hyper/race for today | 16:30 | ||
bbl | |||
AlexDaniel` | o/ | 16:50 | |
AlexDaniel | \o | ||
yoleaux | 11:05Z <jnthn> AlexDaniel: the new hyper/race implementation passes all the tests that the previous one did plus all the todo'd ones plus a load of new ones I've added in a branch that'd let us close 6 RTs; how do you feel about merging it, given we're close to release? | ||
AlexDaniel` | jnthn: let's merge | 16:51 | |
my thinking is that hyper/race didn't really work anyway (only in some rare situations) | |||
and there was no toaster run yet, so we'll see if there's any fallout | 16:52 | ||
timotimo | +1 | 17:04 | |
AlexDaniel` | and also I'd much rather see functional or semi-functional hyper/race in the * release | 17:05 | |
… than what we have now | |||
Zoffix | +1 for merge | 17:07 | |
AlexDaniel` | Zoffix: hey, something is wrong with rakudo.party | 17:18 | |
Zoffix: RT #132284 is an open ticket but does not show up | |||
synopsebot | RT#132284 [new]: rt.perl.org/Ticket/Display.html?id=132284 [REGRESSION] .gist of a Map was arguably better in the past (say Map.new(‘a’ => ‘b’)) | ||
AlexDaniel` | unless I'm blind | ||
pretty sure I didn't delete it | 17:19 | ||
Zoffix | AlexDaniel`: no idea. I deleted some spam this morning... | 17:20 | |
But that map thing was done on purpose I think | 17:21 | ||
Yup. it used to .perl the pairs, not .gist them | |||
c: 2017.07 %(:42a, :70b).gist.say; Map.new((:42a, :70b)).gist.say | 17:22 | ||
committable6 | Zoffix, ¦2017.07: «{a => 42, b => 70}Map.new((:a(42),:b(70)))» | ||
Zoffix rejects the ticket | 17:23 | ||
AlexDaniel` | ಠ_ಠ | 17:28 | |
:) | |||
Zoffix | It's pretty easy to argue why new behaviour is good: rt.perl.org/Ticket/Display.html?id...xn-1500293 | 17:29 | |
And really, the ticket is about Pair.gist vs Pair.perl | |||
(which is a separate topic that can be argued) | |||
AlexDaniel` | Zoffix: fwiw re “Kinda regret that ticket was filed” – why not change the title to your liking? | 17:31 | |
Zoffix | AlexDaniel`: 'cause I wanted to fix it on my own when I think of a good way to fix it, which is why I kept it in my private stash | ||
No I feel rushed | 17:32 | ||
And there were already suggestions to attach a hidden string, which wouldn't've solved the actual issue. | 17:33 | ||
s/^No/Now/; | |||
AlexDaniel` | please don't feel rushed. This was mentioned recently somewhere, so I decided that it's better to have a ticket in case someone mentions it again | 17:34 | |
Zoffix | Yeah, but now I'm an asshole for squatting on a ticket someone else could fix. | 17:35 | |
AlexDaniel` | it's ok | ||
buggable: bugs | |||
buggable | AlexDaniel`, Total: 1628; 6.D: 2; 9999: 9; @LARRY: 28; ANNOYING: 8; BOOTSTRAP: 4; BUG: 591; BUILD: 12; CONC: 44; DOCS: 1; EXOTICTEST: 3; FLAP: 1; GLR: 3; IO: 20; JVM: 48; LHF: 7; LTA: 176; MATH: 5; META: 2; MOAR: 2; MOLD: 233; NATIVECALL: 21; NYI: 58; OO: 13; OPTIMIZER: 8; OSX: 2; PARSER: 5; PERF: 27; POD: 19; PRECOMP: 15; REGEX: 46; REGRESSION: | ||
AlexDaniel`, 38; REPL: 6; RFC: 61; RT: 2; SECURITY: 2; SEGV: 28; SINK: 1; SITE: 1; SPESH: 1; STAR: 7; TESTCOMMITTED: 12; TESTNEEDED: 34; TODO: 13; UNI: 27; UNTAGGED: 282; WEIRD: 2; WINDOWS: 4; See fail.rakudo.party/ for details | |||
AlexDaniel` | luckily there are other 1627 tickets to work on :) | ||
Zoffix | AlexDaniel`: as for tickets not showing up on fail party. No idea why. In the past, I noticed some of Zefram's tickets weren't showing up either :o | 17:43 | |
hm.. filed on "Thu, 12 Oct 2017 22:59:36 -0700" | 17:44 | ||
some race on day-switch maybe: github.com/zoffixznet/r6/blob/mast...der.pl#L91 | 17:45 | ||
Zoffix changes to fetch for 1+ extra day | |||
ZofBot: dates R HRD | 17:51 | ||
ZofBot | Zoffix, Come, get you down stairs | ||
Zoffix | ZofBot: are you saying I'm drunk and should go home? | ||
ZofBot | Zoffix, Ye say honestly | ||
Zoffix | :D | 17:52 | |
timotimo | damn it | 18:09 | |
i just replied to the wrong ticket | |||
my reply hasn't reached rt yet | 18:11 | ||
maybe i only posted it to the mailing list? | |||
yep! | |||
oh, i did get it into rt | 18:12 | ||
man, email is complicated | |||
AlexDaniel` | can we, please, open rakudo/issues? :S | 18:15 | |
Zoffix | Open it :) | 18:19 | |
perlpilot | do we really want both RT and github issues? Or are you proposing to move all of the existing RTs over too? | 18:20 | |
or am I jumping to conclusions? | |||
Zoffix | perlpilot: the proposal was to open both and go Darwinian | 18:22 | |
AlexDaniel` | yeah | 18:23 | |
Zoffix | Also, I recall the stated caveat that people who don't deal with tickets on a regular basis might not want to oppose the idea that much since they don't suffer RT's suckiness :) | ||
AlexDaniel` | well, they're free to express their opinion, but “I don't see any problem with RT” is not going to count for sure | 18:25 | |
perlpilot | Using both seems to be asking for more chaos. | ||
AlexDaniel` | perlpilot: explain | ||
Zoffix | perlpilot: sure, but it needs to be viewed in context that the alternative is what we have now | 18:26 | |
perlpilot | (I have no problem using github issues BTW) | ||
AlexDaniel`: I can imagine problems and I can imagine solutions, so maybe I'll set my imagination aside for a bit and let you guys carry on without naysaying :-) | 18:28 | ||
Zoffix | gah, my love for `obj.meth:` syntax bites me again! This time it's not a ternary but this instead: | 18:36 | |
$rem.add: 'get starship fuel', when => DateTime.new: :2222year, | |||
:who<Zoffix>, :where<space>; | |||
Spent 5m figuring out why my `who` and `where` are missing from the database :) | |||
ZofBot: death to parens! | 18:39 | ||
ZofBot | Zoffix, For my part, am sorry it is turn'd to a drinking | ||
Zoffix | m: await Promise.at(now - 10).then: {say "meow"} | 18:54 | |
camelia | (timeout) | ||
Zoffix | This is really a bug, innit? It should just fire right away. 'cause otherwise if my "at" is really close to `now` I risk races that hang my program | 18:55 | |
s: Promise, 'at', \(now) | |||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/8a88...se.pm#L228 | ||
Zoffix | m: await Promise.in(-10).then: {say "meow"} | ||
This too :( | |||
camelia | (timeout) | 18:56 | |
Zoffix | AlexDaniel`: BTW, was that bug ever fixed? Whatever made IRC::Client not work? | 18:58 | |
'cause now I'll have to upgrade to get the $*SCHEDULER.cue(:in) fix, but I can't 'cause of that bug :) | 18:59 | ||
AlexDaniel` | RT #132191 | 19:00 | |
synopsebot | RT#132191 [new]: rt.perl.org/Ticket/Display.html?id=132191 [REGRESSION] Possible rakudo regression (issues with IRC::Client) | ||
AlexDaniel` | I… didn't update rakudo on the server since then… | ||
Zoffix: I guess you'll have to try it | 19:01 | ||
c: HEAD gist.githubusercontent.com/AlexDan...-bisect.p6 | 19:02 | ||
committable6 | AlexDaniel`, Successfully fetched the code from the provided URL. | ||
AlexDaniel`, gist.github.com/827153e2f91fee5ad3...ae11ef9d97 | |||
AlexDaniel` | oh gosh | ||
Zoffix | c: HEAD gist.githubusercontent.com/zoffixz...027a/p6.p6 | 19:03 | |
committable6 | Zoffix, Successfully fetched the code from the provided URL. | ||
Zoffix, ¦HEAD(8a88d14): ««timed out after 10 seconds» «exit signal = SIGHUP (1)»» | |||
AlexDaniel` | c: HEAD gist.githubusercontent.com/zoffixz...027a/p6.p6 | ||
committable6 | AlexDaniel`, Successfully fetched the code from the provided URL. | ||
AlexDaniel` | again after precomp | ||
committable6 | AlexDaniel`, ¦HEAD(8a88d14): «◀▬▬ _ Attempting to connect to server«timed out after 10 seconds» «exit signal = SIGHUP (1)»» | ||
AlexDaniel` | hmm | ||
Zoffix | k, I'll stuff some debug info into the sock tonight and see what makes it unhappy | ||
|2h IRC::Client bruh | 19:04 | ||
ZofBot | Zoffix, Will remind you on 2017-10-17T17:04:12.850581-04:00 about IRC::Client bruh | ||
AlexDaniel` | c: HEAD gist.githubusercontent.com/zoffixz...027a/p6.p6 | ||
committable6 | AlexDaniel`, Successfully fetched the code from the provided URL. | ||
AlexDaniel`, ¦HEAD(8a88d14): «◀▬▬ _ Attempting to connect to server«timed out after 10 seconds» «exit signal = SIGHUP (1)»» | |||
AlexDaniel` | yeah, still broken | ||
(I had to send a message to MahBot on #zofbot btw, because that's how it is tested) | |||
so it connects just fine but is unable to reply to anything | 19:05 | ||
Zoffix | m: await Promise.at(now+0.001).then: {42.say} | 19:13 | |
camelia | Minimum timer resolution is 1ms; using that instead of -0.365112187335619ms 42 in block <unit> at <tmp> line 1 |
||
AlexDaniel` | “Message body is not shown because it is too large.” | ||
(╯°□°)╯︵ ┻━┻ | |||
Zoffix | this is also whack. I didn't specify no timer resolutions. Just a datetime | ||
(╯°□°)╯︵ ┻━┻ | |||
ZofBot: CATCH! (╯°□°)╯︵ ┻━┻ | 19:14 | ||
ZofBot | Zoffix, You swore to us, And you did swear that oath at Doncaster, That you did nothing purpose 'gainst the state, Nor claim no further than your new-fall'n right, The seat of Gaunt, dukedom of Lancaster | ||
Zoffix | wait a second... | 19:16 | |
AlexDaniel` | buggable: tags | 19:18 | |
buggable | AlexDaniel`, Total: 1629; 6.D: 2; 9999: 9; @LARRY: 28; ANNOYING: 8; BOOTSTRAP: 4; BUG: 591; BUILD: 12; CONC: 44; DOCS: 1; EXOTICTEST: 3; FLAP: 1; GLR: 3; IO: 20; JVM: 48; LHF: 7; LTA: 176; MATH: 5; META: 2; MOAR: 2; MOLD: 233; NATIVECALL: 21; NYI: 58; OO: 13; OPTIMIZER: 8; OSX: 2; PARSER: 5; PERF: 27; POD: 19; PRECOMP: 15; REGEX: 46; REGRESSION: | ||
AlexDaniel`, 38; REPL: 6; RFC: 61; RT: 2; SECURITY: 2; SEGV: 28; SINK: 1; SITE: 1; SPESH: 1; STAR: 7; TESTCOMMITTED: 12; TESTNEEDED: 35; TODO: 13; UNI: 27; UNTAGGED: 283; WEIRD: 2; WINDOWS: 4; See fail.rakudo.party/ for details | |||
AlexDaniel` | 9999: 9 :) | ||
Geth | roast: cedf738d1a | (Zoffix Znet)++ | S17-procasync/stress.t Fix plan A test was moved[^1], but plan never adjusted [1] github.com/perl6/roast/commit/a5b3...0d47819307 |
19:19 | |
Zoffix | m: react whenever Supply.interval: -0.0001 { .say; done if $++ > 10 } | 19:22 | |
camelia | Minimum timer resolution is 1ms; using that instead of -0.1ms 0 1 2 3 4 5 6 7 8 9 10 11 in code at <tmp> line 1 |
||
yoleaux | 19:21Z <HoboWithAShotgun> Zoffix: github.com/zoffixznet/perl6-Color/pull/8 | ||
Zoffix | m: react whenever Supply.interval: -0.001 { .say; done if $++ > 10 } | ||
(hangs) | |||
moritz | GIGO? | ||
camelia | (timeout)0 | ||
Zoffix | So I'm gonna make it: if `$at` is negative, treat it as zero. If `$in` is negative, pass it through to-millis routine so it whines about too-small delay | 19:23 | |
s/treat it as zero/fire up the stuff without delay/; | |||
Also, what's this times stuff?: github.com/rakudo/rakudo/blob/8a88...er.pm#L635 | 19:24 | ||
Looks like it's scheduling to fire the stuff $times times after waiting for delay, rather than firing stuff after delay $times times | 19:25 | ||
Zoffix isn't sure which one is wanted | |||
AlexDaniel` goes to take a nap | 19:29 | ||
timotimo | do we actually ever call cue with a times parameter? | 19:30 | |
Zoffix | timotimo: brief grep doesn't turn up anything and probably why the bug went unnoticed | 19:31 | |
timotimo | thought so | ||
Zoffix | m: $*SCHEDULER.cue: {say time}, :3times | ||
camelia | 1508268717 | ||
Zoffix | m: $*SCHEDULER.cue: {say time}, :3times | 19:32 | |
camelia | 1508268722 1508268722 1508268722 |
||
timotimo | m: $*SCHEDULER.cue: {say time; sleep 1}, :3times | ||
camelia | 1508268743 | ||
timotimo | m: $*SCHEDULER.cue: {say time; sleep 1}, :3times; sleep 5 | ||
camelia | 1508268751 1508268751 1508268751 |
||
timotimo | ah, with no delay, of course it'd fire at the same time | 19:33 | |
Zoffix | m: $*SCHEDULER.cue: {say time; sleep 1}, :3times, :1delay; sleep 5 | ||
camelia | 1508268798 1508268798 1508268798 |
||
Zoffix | The supposed behaviour isn't clear to me | 19:34 | |
timotimo | i'm not sure either | ||
Zoffix | Ah ok, the docs say "$times tells the scheduler how many times to run the code." | 19:35 | |
So then it's right | |||
Weird feature, but ok :) | |||
timotimo | fair enough | ||
Zoffix | gonna fix the negative delay stuff after relocating; need to take a better look at the code :) | 19:38 | |
Zoffix & | |||
Would be nice to give Windows a little love for this release. It's possible bdfoy will finish his book before next R* release so there might be an influx of users + Christmas will probably see some people who didn't like our compiler a year ago trying out what we're up to. | 20:14 | ||
There was some stresstest hanging last time I tried running it | |||
(on win10) | |||
buggable | New CPAN upload: App-Cpan6-0.6.16.tar.gz by TYIL cpan.metacpan.org/authors/id/T/TY/....16.tar.gz | 20:21 | |
MasterDuke | huh, `use fatal` doesn't work? | 21:50 | |
timotimo | doesn't in what way? | 21:53 | |
m: use fatal; my $foo = Failure.new; say "test" | |||
camelia | Failed Actually thrown at: in block <unit> at <tmp> line 1 |
||
timotimo | m: my $foo = Failure.new; say "test" | 21:54 | |
camelia | test | ||
MasterDuke | hm. i'm getting `Regex object coerced to string (please use .gist or .perl to do that) in block at -e line 1`, but wanted a full backtrace and don't one even with --ll-exception | 21:56 | |
and use fatal | 21:57 | ||
timotimo | yeah, that's a warning, isn't it? | ||
you could try CONTROL { say .backtrace.full } | |||
MasterDuke | timotimo++ that works | 21:58 | |
timotimo | ecool | ||
MasterDuke | heh, though that did also cause `MoarVM panic: Trying to unwind over wrong handler` as the very last output | 21:59 | |
timotimo | oops | ||
did you put an actual try in front of the CONTROL block? it wasn't meant like that %) | |||
MasterDuke | nope | ||
timotimo | OK | 22:00 | |
MasterDuke | this is exactly what i ran (with a modified rakudo though): perl6 --ll-exception -e 'use fatal; use MONKEY; for "a".."f" { my $r = rx/$_/; "hello" ~~ /$r/; CONTROL { say .backtrace.full } }' | 22:01 | |
same thing with both uses removed | 22:02 | ||
huh, it's something about my (local) modifications to INTERPOLATE | 22:07 | ||
Zoffix | MasterDuke: `use fatal` fatalizes Failures, not warnings. | 22:23 | |
And it's auto-enabled within try blocks. | |||
m: $ = +"a"; say "alive" | |||
camelia | alive | ||
Zoffix | m: use fatal; $ = +"a"; say "alive" | ||
camelia | Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5a' (indicated by ⏏) in block <unit> at <tmp> line 1 |
||
Zoffix | m: try { $ = +"a"; say "alive" } | 22:24 | |
camelia | ( no output ) | ||
Zoffix | m: try { no fatal; $ = +"a"; say "alive" } | ||
camelia | alive | ||
MasterDuke | i know i've made that mistake before. i must be thinking of Perl 5 `use warning 'FATAL'` | 22:36 | |
heh. we could swap that, `use fatal :warn` | 22:38 | ||
timotimo | fatal warn :use | 22:45 | |
gfldex | jnthn: it seams that my .hyper test seams not to fire (often) when the loop is within the script. Also I got it to fire more frequently. updated in gist.github.com/b9914d412c807f45d2...d45726f2b2 | 22:46 | |
yoleaux | 14:48Z <jnthn> gfldex: I figured it out, it's not a hyper/race bug after all, but rather that there is a race because the same Seq is re-used many times, and so threads race to .cache it, which is not a threadsafe operation. Do it as `my @l2 = |(1, ½, (1/3).Num, ∞, :1a, [:2b, c => {:4e, :5f} ], <a b c>.Seq) xx $repetitions;` and things work ('cus it thunks the LHS of xx and generates separate Seqs) | ||
gfldex goes to test without a .Seq | 22:47 | ||
MasterDuke | m: <warn use fatal>.combinations.pick.say | 22:48 | |
camelia | (warn) | ||
MasterDuke | oops | ||
m: <warn use fatal>.permutations.pick.say | 22:49 | ||
camelia | (use warn fatal) | ||
gfldex | .tell jnthn is .cache.hyper itself not threadsafe or are are multiple .cache calls on the same Seq unsafe? (And how the hell do I doc that?) | 22:58 | |
yoleaux | gfldex: I'll pass your message to jnthn. | ||
Zoffix | gfldex: multiple .cache calls. They mutate $!list attribute inside the seq | 22:59 | |
Not sure what the new Seq looks like, but Seq.iterator is also not thread safe (unless I'm misunderstanding what is and isn't threadsafe) | 23:01 | ||
gfldex | I'm not sure if I still like Seq very much. :-> | 23:02 | |
Zoffix | and wouldn't reifying it also not be thread safe since it's mutating iterator | 23:03 | |
ZofBot: my world is collapsing on itself! HALP | |||
ZofBot | Zoffix, In such a night as this, When the sweet wind did gently kiss the trees, And they did make no noise- in such a night, Troilus methinks mounted the Troyan walls, And sigh'd his soul toward the Grecian tents, Where Cressid lay that night | ||
gfldex | Luckily github can tell us who canned those worms. :P | 23:05 | |
timotimo | an upcoming (but not before this month's release) change to VMArray inside moarvm will make concurrent .cache calls not crash, only give problematic data - depending on whether the code uses push or bindpos it'll either put values calculated for the same spot in different places or "just" calculate any given value multiple times | 23:22 |