Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-10-19

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 AlexDaniel` japhb: more info?
01:54 astj joined #perl6-dev
01:54 llfourn joined #perl6-dev
01:57 ilbot3 joined #perl6-dev
01:57 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
03:40 evalable6 joined #perl6-dev
03:40 nativecallable6 joined #perl6-dev
03:40 greppable6 joined #perl6-dev
03:40 quotable6 joined #perl6-dev
03:40 bloatable6 joined #perl6-dev
03:40 unicodable6 joined #perl6-dev
03:40 committable6 joined #perl6-dev
03:40 releasable6 joined #perl6-dev
03:40 benchable6 joined #perl6-dev
03:40 coverable6 joined #perl6-dev
03:40 bisectable6 joined #perl6-dev
03:40 squashable6 joined #perl6-dev
03:40 statisfiable6 joined #perl6-dev
05:23 patrickz joined #perl6-dev
06:03 ggoebel joined #perl6-dev
06:46 nativecallable6 joined #perl6-dev
06:46 bloatable6 joined #perl6-dev
06:46 quotable6 joined #perl6-dev
06:46 coverable6 joined #perl6-dev
06:46 greppable6 joined #perl6-dev
06:46 benchable6 joined #perl6-dev
06:46 committable6 joined #perl6-dev
06:46 bisectable6 joined #perl6-dev
06:46 unicodable6 joined #perl6-dev
06:46 evalable6 joined #perl6-dev
06:46 releasable6 joined #perl6-dev
06:46 squashable6 joined #perl6-dev
06:46 statisfiable6 joined #perl6-dev
07:48 lizmat Files=1227, Tests=75722, 314 wallclock secs (14.71 usr  4.97 sys + 2169.51 cusr 211.27 csys = 2400.46 CPU)
07:49 * lizmat expects test-t to be very close to 3
07:57 AlexDaniel` lizmat: it is 3.093
07:59 lizmat AlexDaniel: is that number from after the hyper/race branch got merged ?
08:00 AlexDaniel` no
08:00 AlexDaniel` but I'm not expecting any positive change :)
08:03 lizmat I wasn't either, but running the benchmark on my own machine, indicated a positive effect
08:04 lizmat also make spectest dropped from 320 to 314 for me, even though there are more tests
08:17 samcv is hyper getting parallelized?
08:18 lizmat samcv: you mean >>.  or the explicity .hyper ?
08:19 samcv either
08:19 samcv i don't know what i don't know yet
08:19 samcv only it relates to hyper/race
08:19 lizmat afaik, explicit .hyper and .race now parallellize properly
08:20 lizmat not sure about >>.
08:20 AlexDaniel` I hope not.
08:20 lizmat m: ^10 >>.&say
08:20 camelia rakudo-moar f9c10c214: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Malformed postfix call␤at <tmp>:1␤------> 3^10 >>.7⏏5&say␤»
08:20 lizmat m: ^10 >>.say
08:20 camelia rakudo-moar f9c10c214: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Missing << or >>␤at <tmp>:1␤------> 3^10 >>.7⏏5say␤»
08:20 lizmat m: (^10)>>.say
08:20 camelia rakudo-moar f9c10c214: OUTPUT: «0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤»
08:20 lizmat m: (^100)>>.say
08:20 camelia rakudo-moar f9c10c214: OUTPUT: «0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤21␤22␤23␤24␤25␤26␤27␤28␤29␤30␤31␤32␤33␤34␤35␤36␤37␤38␤39␤40␤41␤42␤43␤44␤45␤46␤47␤48␤49␤50␤51␤5…»
08:20 lizmat hmmm
08:21 AlexDaniel` not that I don't want it, but there are lots of people who misuse ». So if we ever do it, not 3 days before the release
08:21 AlexDaniel` (to give me a chance to adjust the ecosystem for the change :) )
08:21 AlexDaniel` but yeah, this was only about .hyper and .race
08:21 AlexDaniel` or so I think
08:22 AlexDaniel` fwiw I don't understand something
08:22 AlexDaniel` m: <a b c d e>.hyper(:1batch, :5degree).map({ sleep 1; 42 }).say; say now - BEGIN now
08:22 camelia rakudo-moar f9c10c214: OUTPUT: «(42 42 42 42 42)␤1.1536079␤»
08:22 AlexDaniel` so that works, and is parallelized
08:22 AlexDaniel` m: for <a b c d e>.hyper(:1batch, :5degree) { sleep 1; 42 }; say now - BEGIN now
08:22 camelia rakudo-moar f9c10c214: OUTPUT: «WARNINGS for <tmp>:␤5.0190818␤Useless use of constant integer 42 in sink context (line 1)␤»
08:22 AlexDaniel` but this isn't?
08:23 AlexDaniel` oh
08:24 lizmat m: say do for <a b c d e>.hyper(:1batch, :5degree) { sleep 1; 42 }; say now - BEGIN now
08:24 camelia rakudo-moar f9c10c214: OUTPUT: «(42 42 42 42 42)␤5.0396871␤»
08:24 lizmat hmmm
08:24 AlexDaniel` maybe “for” is supposed to be sequential
08:26 AlexDaniel` c: 2017.09,HEAD say (for <a b c d e>.hyper(:1batch, :5degree) { sleep 1; 42 }); say now - BEGIN now
08:26 committable6 AlexDaniel`, ¦2017.09: «()␤1.01321534» ¦HEAD(f9c10c2): «(42 42 42 42 42)␤5.0423326»
08:26 AlexDaniel` c: 2017.09,HEAD say (for <a b c d e>.hyper(:1batch, :5degree) { sleep 1; 42 }); say now - BEGIN now
08:26 committable6 AlexDaniel`, ¦2017.09: «()␤1.0146371» ¦HEAD(f9c10c2): «(42 42 42 42 42)␤5.039172»
08:26 AlexDaniel` c: 2017.09 say (for <a b c d e>.hyper(:1batch, :5degree) { sleep 1; 42 }); say now - BEGIN now
08:26 committable6 AlexDaniel`, ¦2017.09: «(42 42 42 42 42)␤1.0143836»
08:26 AlexDaniel` ok there it is
08:26 AlexDaniel` so yeah, it works now, but… not really :)
08:41 robertle joined #perl6-dev
09:12 gfldex I wonder if .hyper on a Seq that is not already cached should throw.
09:12 yoleaux 18 Oct 2017 08:59Z <jnthn> gfldex: Multiple .cache calls on the same Seq
09:17 jnthn Uh, no?
09:18 jnthn Otherwise then you can't do a hyper pipeline that doesn't keep all the values around
09:18 jnthn The problem wasn't the at we were doing .hyper on a non-cached Seq, it was that the same Seq was being used by two workers
10:00 llfourn joined #perl6-dev
10:07 AlexDaniel` jnthn: should 「for (…).hyper { … }」 work as expected or not?
10:07 AlexDaniel` where “expected” would be similar to how .hyper.map is working right now
10:09 jnthn Trouble is that I'm not sure I consider that expected
10:09 AlexDaniel` hm
10:09 jnthn See discussion on this channel yesterday or day before
10:14 AlexDaniel` (for others, it's around here: https://irclog.perlgeek.de/perl6-dev/2017-10-17#i_15315306 )
10:18 AlexDaniel` “The reason to draw the line with `for` is because typically, `for` is considered an imperative construct”
10:19 AlexDaniel` hmm, every time I attempted to use hyper/race I wanted to use 「for」
10:19 AlexDaniel` because normally it doesn't feel right to wrap your code block in map across several lines
10:19 jnthn AlexDaniel`: yeah, the idea is you'd write hyper for blah { }
10:19 AlexDaniel` ooooh…
10:20 jnthn So you can read the code and know the semantics of your for loop, without having to know exactly what blah returns
10:20 AlexDaniel` hyper for blah.hyper { }
10:20 ilmari hyper for mance { ... }
10:21 AlexDaniel` jnthn: I guess it makes sense
10:21 jnthn ilmari: Oh goodness, that's amazing :P
10:23 AlexDaniel` although I'm pretty we'll eventually have “I use 「for @stuff.hyper {}」 and it does not hyper!” in our FAQ :)
10:23 AlexDaniel` or wait, will it hyper non-hyper stuff automatically?
10:23 AlexDaniel` like 「hyper for @arr { }」 ?
10:23 AlexDaniel` ooh
10:24 jnthn Yes, hyper on the for loop means "I want the body of this for loop run in parallel"
10:24 ilmari jnthn: feel free to use it when blogging  :)
10:26 jnthn AlexDaniel`: My worry is that somebody inside of their module refactors their code, so that it returns a HyperSeq instead of a Seq, and then somebody using that code does a for loop over it, and suddenly their code breaks in hard to understand ways because the for loop was, say, mutating stuff outside of the loop.
10:26 AlexDaniel` jnthn: right
10:28 AlexDaniel` jnthn: fwiw, 「hyper for … {}」 is doing something else right now
10:28 AlexDaniel` I think it does (for … {}).hyper
10:29 jnthn Yeah, that's on my todo list :)
10:29 jnthn For later today, or tomorrow
10:29 AlexDaniel` alright I'd better stop asking irrelevant questions and start working on the changelog or something
10:29 AlexDaniel` releasable6: status
10:29 releasable6 AlexDaniel`, Next release in 2 days and ≈8 hours. 2 blockers. Changelog for this release was not started yet
10:29 releasable6 AlexDaniel`, Details: https://gist.github.com/909db1db83587f6eea3ced5be35aad13
10:30 AlexDaniel` ah, okay let's test that first one…
10:30 AlexDaniel` c: 2017.07,HEAD https://gist.githubusercontent.com/AlexDaniel/8d9110472c53c45c327811598295a9d7/raw/927e5ec5540fff38031c3546406bb3608a193cb8/test.p6
10:30 committable6 AlexDaniel`, Successfully fetched the code from the provided URL.
10:31 committable6 AlexDaniel`, https://gist.github.com/569f4cd48eb7e12e50922035d0d4d94e
10:31 AlexDaniel` \o/
10:33 AlexDaniel` jnthn: oh… while you're here, do you have anything against opening rakudo/issues on github?
10:35 AlexDaniel` .tell Zoffix lately you've been resolving pretty hard 「testneeded」 tickets, do you have any idea on what we can do with this one? RT #132269
10:35 yoleaux AlexDaniel`: I'll pass your message to Zoffix.
10:36 synopsebot RT#132269 [open]: https://rt.perl.org/Ticket/Display.html?id=132269 [EXOTICTEST][REGRESSION][BUG] JIT removing loop construct and confusing last()
10:37 Zoffix Don't have time to look at it right now
10:37 yoleaux 10:35Z <AlexDaniel`> Zoffix: lately you've been resolving pretty hard 「testneeded」 tickets, do you have any idea on what we can do with this one? RT #132269
10:46 jnthn AlexDaniel`: Been thinking about it, still a bit conflicted if having two issue trackers will be a better situation than now (I don't really want a migration of existing tickets)
10:47 jnthn Though in a sense we already have that with the fact we accept PRs
10:47 AlexDaniel` and also we have github issues for all other projects (nqp, moarvm)
11:03 W4RL0RD joined #perl6-dev
11:14 dogbert2 m: .base: 16 for ^100000; say now - INIT now
11:14 camelia rakudo-moar f9c10c214: OUTPUT: «0.2318178␤»
11:14 dogbert2 m: .base: 16 for ^100000 .hyper; say now - INIT now
11:14 camelia rakudo-moar f9c10c214: OUTPUT: «0.374095␤»
11:15 stmuk_ hmm I'm considering removing panda from R* this release. Even although it's been warning about deprecation for 3 releases I suspect complaints are likely
11:15 dogbert2 should hyper be slower here?
11:17 AlexDaniel` dogbert2: not that it *should* be like this, but I'm not very surprised
11:18 ilmari m: ^100000.hyper.map: .base: 16 ; say now - INIT now
11:18 camelia rakudo-moar f9c10c214: OUTPUT: «Potential difficulties:␤    Precedence of ^ is looser than method call; please parenthesize␤    at <tmp>:1␤    ------> 3^1000007⏏5.hyper.map: .base: 16 ; say now - INIT n␤WARNINGS for <tmp>:␤Useless use of "^" in expression "^100000.hy…»
11:18 ilmari m: (^100000).hyper.map: .base: 16 ; say now - INIT now
11:18 camelia rakudo-moar f9c10c214: OUTPUT: «No such method 'base' for invocant of type 'Any'. Did you mean any of these?␤    Hash␤    hash␤    take␤␤  in block <unit> at <tmp> line 1␤␤»
11:19 ilmari m: (^100000).hyper.map: *.base: 16 ; say now - INIT now
11:19 camelia rakudo-moar f9c10c214: OUTPUT: «0.9164133␤»
11:19 ilmari m: (^100000).map: *.base: 16 ; say now - INIT now
11:19 camelia rakudo-moar f9c10c214: OUTPUT: «0.2553566␤»
11:19 AlexDaniel` .base is not the slowest operation out there
11:24 dogbert2 AlexDaniel`: why are you not surprised?
11:32 AlexDaniel` dogbert2: well, in your snippet it took just 230ms to do the whole thing. It's unfortunate that hyper is slower, but it's not too surprising that it took a bit more to set things up for hyper. Consider something like this instead:
11:32 AlexDaniel` { .base: 16 for ^100000 } for ^80 .hyper(:10batch, :4degree); say now - INIT now
11:32 AlexDaniel` .hyper in this case outperforms regular for by 1 second, which is not much at all
11:32 AlexDaniel` but it is faster at least
11:34 dogbert2 it's indeed faster, by a tiny amount
11:35 |Tux| This is Rakudo version 2017.09-457-gf9c10c214 built on MoarVM version 2017.09.1-608-ge051ee3c
11:35 |Tux| csv-ip5xs        1.152 -  1.163
11:35 |Tux| test             8.522 -  8.612
11:35 |Tux| test-t           3.044 -  3.101
11:35 |Tux| csv-parser      11.751 - 11.933
11:35 dogbert2 damn, we're so close to get below 3
11:37 AlexDaniel` the last graph is so linearly steady https://tux.nl/Talks/CSV6/speed4.html
11:56 lizmat grrr... there's no way to find out bottlenecks with .hyper / .race :-(
11:56 lizmat --profile just gives garbage  :-(
12:07 jnthn Good job somebody's working on profiling :)
12:09 lizmat yeah, but that will be some time  :-(
12:09 jnthn Note that `{ .base: 16 for ^100000 } for ^80 .hyper(:10batch, :4degree);` may be compiling into a parallel iteration and so not doing much good at all
12:10 jnthn Here, `for ^80 { .base: 16 for ^100000 }; say now - INIT now` is 14s, and `^80 .hyper(:10batch, :4degree).map: { .base: 16 for ^100000 }; say now - INIT now` is 4s
12:11 jnthn m: say 14.34 / 4.162
12:11 camelia rakudo-moar f9c10c214: OUTPUT: «3.445459␤»
12:11 jnthn So factor of 3.5 speedup
12:12 jnthn And on my 12-core box here, I can do `^80 .hyper(:10batch, :12degree).map: { .base: 16 for ^100000 }; say now - INIT now` in 2.99s
12:12 jnthn m: say 14.34 / 2.99
12:12 camelia rakudo-moar f9c10c214: OUTPUT: «4.795987␤»
12:12 jnthn Nearly factor of 5
12:13 jnthn Hopefully profiling improvements will take less than the approx 2 years it took for hyper/race to get fixed :P
12:17 lizmat for reference: ^80 .hyper(:10batch, :4degree).map: { .base: 16 for ^100000 }; say now - INIT now on my MBP is 3.35x faster than without hyper
12:17 lizmat but takes 1.17x more CPU
12:17 SlipperySlope joined #perl6-dev
12:19 lizmat oddly enough, moving it to :8degree, the wallclock isn't reduced much (just msecs), but the CPU nearly doubles
12:19 jnthn How many cores do you have?
12:20 lizmat (where my MBP is quadcore)
12:20 lizmat TEST_JOBS is always 8 for me
12:20 jnthn Yeah, but there's a difference between mixed IO/CPU bound tests and totally CPU bound work
12:20 lizmat true
12:20 jnthn ooh, if you dont specify :degree at all, how does it do?
12:21 jnthn It should pick the number of workers that you have CPU cores
12:21 lizmat similar result to :4degree
12:22 jnthn ah, nice :)
12:23 lizmat still, if I use :8degree, my "top" shows it's running at 770% CPU
12:23 lizmat so it *is* using all 8 hyperthreaded cores
12:23 jnthn Yeah
12:24 jnthn I guess they can only give so much help
12:24 jnthn Or there's some other bottleneck somewhere
12:24 lizmat I wonder
12:24 * jnthn is, for now, happy that it works at all :)
12:25 lizmat the sys time on :8degree is only 5x as much as with :4degree
12:25 lizmat jnthn++  # making it work at all  :-)
12:26 jnthn I should go do $other-task for a bit, will see if I can get hyper/race keywords fixed up and maybe even a warning if you do for @foo.hyper { }
12:26 jnthn uh, in some hours after $other-task I mean :)
12:27 lizmat :-)
13:05 lizmat commute to NR.PM meeting&
13:33 dogbert2 test failure in t/spec/S32-io/io-handle.t, not ok 28 - opened filehandles get closed on exit automatically
13:46 |Tux| joined #perl6-dev
14:15 ugexe timotimo: back on the topic of feeds - what advantage does passing the results through channels instead of as arguments (like map) have? when the receiving block has a heavy startup?
14:16 timotimo not sure. maybe the call graph will be a lot simpler?
14:16 ugexe theoretically of course
14:22 Zoffix dogbert2: what's the full output of the failure?
14:23 Zoffix Oh, I think I forgot to amend that test last night
14:23 Geth ¦ roast: d7ab762162 | (Zoffix Znet)++ (committed using GitHub Web editor) | S32-io/io-handle.t
14:23 Geth ¦ roast: Use new arg name for buffer
14:23 Geth ¦ roast:
14:23 Geth ¦ roast: Old one emits deprecation warnings, causing test to fail
14:23 Geth ¦ roast: review: https://github.com/perl6/roast/commit/d7ab762162
14:23 Zoffix dogbert2: ^ that might fix the issue
14:24 Zoffix actually that test is crap and doesn't cover our current behaviour
14:25 Zoffix |6h fix text to do a dummy initial print, so tested stuff is actually buffered: https://github.com/perl6/roast/commit/d7ab762162
14:25 ZofBot Zoffix, Will remind you on 2017-10-19T16:25:41.440087-04:00 about fix text to do a dummy initial print, so tested stuff is actually buffered: https://github.com/perl6/roast/commit/d7ab762162
14:25 Zoffix ZofBot: botsnack
14:25 ZofBot Zoffix, And him- wondrous him! miracle of men!- him did you leave- Second to none, unseconded by you- To look upon the hideous god of war In disadvantage, to abide a field Where nothing but the sound of Hotspur's name Did seem defensible
14:26 pmurias joined #perl6-dev
14:26 pmurias AppVeyor seems to be showing build failures :(
14:27 Zoffix pmurias: for which project?
14:27 pmurias nqp
14:28 Zoffix Is it even setup right? I get "Specify a project or solution file. The directory does not contain a project or solution file." when I try to view the failures
14:29 pmurias tyil: I'm pretty sure go being less powerfull than Perl 6 is a design goal and from their point of view a benefit :)
14:29 Zoffix I don't see any .appveyor.yml, or whatever it's called, files in nqp
14:30 timotimo that job is more or less done by moar's appveyor
14:30 timotimo because moar has no tests of its own it runs the nqp test suite for every commit
14:30 timotimo of course that means we don't test nqp-j, and not every nqp commit
14:35 * pmurias should get round to setting up travis for nqp-js
14:36 tyil pmurias: ;)
14:53 japhb AlexDaniel: HTTP::UserAgent failed the testing phase under zef install with a new Rakudo build right after Zoffix bumped MoarVM; it produced a multi-page backtrace which includes a lot of info that I'd have to scrub to even gist.  Were you able to install it on a local build?
15:18 callyalater joined #perl6-dev
15:18 callyalater left #perl6-dev
15:36 Zoffix I didn't try.
15:36 Zoffix (don't have a recent-enough build around right now)
16:08 Zoffix japhb: just re-did travis build for WWW that has HTTP::UA as prereq and it built and passed: https://travis-ci.org/zoffixznet/perl6-WWW
16:09 Zoffix Wonder why "Result: PASS" string gets messed up so offen and part of it is printed on the NEXT line
16:13 ugexe i was just going to ask that
16:13 jnthn I've seen that happen on Travis occasionally
16:13 jnthn Never had it happen in any other case
16:13 Zoffix japhb: actually NETWORK_TESTING wasn't set never mind. Gonna try again with it set
16:14 * Zoffix is reminded to write a blog about Test::When to encourage people to use all the same env vars for this stuff
16:18 jnthn Hurrah, think I've got `hyper for @foo { }` and `race for @foo { }` working, fixed `lazy for @foo { }` along the way, and a plain for @foo { } will never give you threading surprises.
16:18 * |Tux| busy porting perl5' Text::CSV_XS new formula handling to perl6' Text::CSV ...
16:19 |Tux| https://github.com/Tux/Text-CSV_XS/blob/master/doc/CSV_XS.md#formula_handling
16:19 timotimo formula handling; turns Text-CSV into a spreadsheet program? :)
16:20 |Tux| no. read those docs: they are safety measurements after reading http://georgemauer.net/2017/10/07/csv-injection.html
16:23 timotimo oh, ok
16:24 ilmari |Tux|: I'm not sure I like the silent ignoring of unknown values, for something that's supposed to be a safety feature
16:24 |Tux| perl6 will die with error 1500
16:24 ilmari $csv->formula('coark') # oops
16:24 |Tux| and your feedback is just a fraction of a century too late
16:24 ilmari uh, this is a new feature...
16:24 jnthn omg test failures...
16:25 |Tux| yep, but it had many day of reviews and feedback and I released an hour ago
16:25 timotimo damn, something relying on improper behaviour?
16:25 * |Tux| is willing to make "coark" fatal in perl5 too
16:25 ilmari «All other values will give a warning and then fallback to diag.» - okay, at least it's not _silent_
16:26 ilmari but I'd rather have an exception
16:26 |Tux| noted
16:27 |Tux| $ p6 -MText::CSV -e'my $c =Text::CSV.new(formula => "dei");'
16:27 |Tux| PRM - Invalid/unsupported argument(s)
16:37 ilmari [Tux]: now I remember where I got the idea that the delimiter had to be a single one-byte character: postgres' COPY command has that restriction
16:38 ilmari s/remember/realise/ # was just reading the manual
16:40 |Tux| perl5.perl6 translation error in brain: 5  «my @d; for (@data) { $x->foo ($_); push @d, $x->bar; }»
16:41 japhb |Tux|: Are you asking for a translation?
16:41 |Tux| I started with «@d = @data.map($x.foo(*);$x.bar)»
16:41 ugexe in zef if I change a `whenever $proc.stdout { $.stdout.emit($_.chomp) }` to `whenever $proc.stdout { my $o = $_.chomp; $.stdout.emit($g) }` the "PAS\nS" thing stops happening
16:42 |Tux| japhb, more like the "most elegant way in p6 to do that»
16:42 japhb my @d = @data.map: { $x.foo($_); $x.bar }
16:44 |Tux| Drat :) I had something close to that, but in that attempt I forgot the braces. Thanks!
16:44 dogbert17 Zoffix: t/spec/S32-io/io-handle.t works now. Thanks
16:44 japhb No problem, |Tux| .  :-)
16:44 ugexe .bar with $x.foo(*)
16:44 japhb ugexe: I don't think the result of $x.foo is used.
16:44 ugexe ah yeah
16:44 japhb In particular, it doesn't replace $_
16:44 |Tux| it isn't
16:45 ugexe .foo(*) && .bar with $x isn't quite as nice
16:45 * ugexe or maybe `and .bar`
16:46 Geth ¦ rakudo/nom: cf1673d9c2 | (Jonathan Worthington)++ | 5 files
16:46 Geth ¦ rakudo/nom: Clear up `for` and `hyper|race|lazy for` semantics
16:46 Geth ¦ rakudo/nom:
16:46 Geth ¦ rakudo/nom: A plain `for` loop will now always mean serial execution, to avoid
16:46 Geth ¦ rakudo/nom: surprises (for example, in `for some-module-code() { }` it is far
16:46 Geth ¦ rakudo/nom: preferable to know that the module code can't suddenly cause the `for`
16:46 Geth ¦ rakudo/nom: loop's body to run on different threads by changing its return type!)
16:46 Geth ¦ rakudo/nom: The `hyper for foo() { }` and `race for foo() { }` constructs will run
16:46 Geth ¦ rakudo/nom: the loop body in parallel under the `hyper` or `race` paradigm (these
16:46 Geth ¦ rakudo/nom: are identical in sink context). Finally, `lazy for @foo { }` is fixed
16:46 Geth ¦ rakudo/nom: to actually lazily execute the loop body when data is needed; this was
16:46 Zoffix .foo(*) just calls .foo with Whatever. It doesn't close over it
16:46 Geth ¦ rakudo/nom: broken before now.
16:46 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cf1673d9c2
16:46 japhb ugexe: That assumes the result of .foo is trueish
16:48 |Tux| ugexe, using the with has type check issues
16:48 |Tux| Type check failed in binding to parameter '$buffer'; expected Str but got Whatever (*)
16:48 Zoffix ugexe: `$.stdout.emit($g)` <-- $g is meant to be $o there?
16:49 ugexe Zoffix: yeah, but I just got a \n with that code too
16:49 jnthn I'll write tests for those tomorrow :)
16:50 jnthn .in 15 hours write tests for `lazy/hyper/race for foo() { }`
16:50 yoleaux jnthn: Sorry, I don't understand your duration. Try using units: 1h30m, 1d, etc.
16:50 Zoffix ugexe: perhaps a rouge "\n" getting sent on stderr at the same time as .stdout sents stuff? I forget if it's possible to make them overlap like that by just doing printing to STDERR/STDOUT from diff threads or something
16:50 jnthn .in 15h write tests for `lazy/hyper/race for foo() { }`
16:50 yoleaux jnthn: I'll remind you on 20 Oct 2017 07:50Z
16:51 jnthn bbl o/
16:51 lizmat joined #perl6-dev
16:51 Zoffix \o\
16:51 ugexe Zoffix: yeah thats possible, but nothing over the last month of commits really sticks out to me yet
16:52 Zoffix timotimo: was gonna say but forgot. Looks like it's only the separate .meta file PAUSE generates has the CPAN URL; the META inside the dist is still pristine and contains GithUb's source: https://modules.perl6.org/dist/JSON::Fast:cpan:TIMOTIMO/META6.json#L21
16:52 Zoffix Dunno how reliable would it be to assume that's the repo url
16:53 timotimo that's a 404 for me?
16:53 Zoffix ugexe: I think it started happening when buffering was merged. I remember AlexDaniel noticing the "PASS" stuff around that time
16:54 Zoffix timotimo: oh shi.... I think I nukerized the website
16:54 |Tux| I can CATCH die. can I also catch warn?
16:54 Zoffix db got only 500 modules in it
16:54 Zoffix |Tux|: CONTROL
16:55 * |Tux| reads docs ...
16:55 lizmat m: CONTROL { dd $_ }; warn "foo"
16:55 camelia rakudo-moar cf1673d9c: OUTPUT: «CX::Warn.new(message => "foo")␤MoarVM panic: Trying to unwind over wrong handler␤»
16:55 lizmat oooohh
16:55 Zoffix m: CONTROL { when CX::Warn { "got a warning: $_"; resume } }; warn 'meow'; say 42
16:55 camelia rakudo-moar cf1673d9c: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤    resume used at line 1. Did you mean 'rename', 'reduce'?␤␤»
16:55 Zoffix m: CONTROL { when CX::Warn { "got a warning: $_"; .resume } }; warn 'meow'; say 42
16:55 camelia rakudo-moar cf1673d9c: OUTPUT: «WARNINGS for <tmp>:␤42␤Useless use of "got a warning: $_" in expression "got a warning: $_" in sink context (line 1)␤»
16:55 Zoffix hehe meta warning
16:55 Zoffix m: CONTROL { when CX::Warn { say "got a warning: $_"; .resume } }; warn 'meow'; say 42
16:55 camelia rakudo-moar cf1673d9c: OUTPUT: «got a warning: meow␤42␤»
16:55 Zoffix |Tux|: ^
16:56 |Tux| overwhelming :)
16:56 Zoffix |Tux|: why tho? If you want to just silence warnings, you can use `quietly`
16:57 Zoffix m: quietly { warn 'meow'; say 42 }
16:57 camelia rakudo-moar cf1673d9c: OUTPUT: «42␤»
16:57 Zoffix Oh wait, I forgot that I destroyed modules site :P
16:57 |Tux| no, in my test I want to check if the intended warning was indeed issued
16:58 Zoffix We should build backup dbs, like once a day, so if nukerage happens we can just plug on in
16:58 * Zoffix uses one from beginnign of october, if it still works
17:01 Zoffix Actually my change was only to the web app... Wonder what nuked it
17:07 Zoffix The log shows building 933 dists and then at the end it removes 337s it deemed removed: https://modules.perl6.org/update.log
17:14 Zoffix ¯\_(ツ)_/¯ don't see anything wrong with code. Perhaps it got upset that I pulled to repo while it was building, but I neither see why it'd affect it nor had any issues when I done so in the past.
17:14 Zoffix Running a new build job right now. Gonna see if it fails or not
17:14 * Zoffix &
17:14 robertle joined #perl6-dev
17:14 Zoffix timotimo: URL now works BTW: https://modules.perl6.org/dist/JSON::Fast:cpan:TIMOTIMO/META6.json#L21
17:23 Zoffix japhb: full testsuite ran this time and HTTP::UA passed all tests on HEAD: https://travis-ci.org/zoffixznet/perl6-WWW#L1597-L1627
17:29 japhb Zoffix: Will start a fresh from scratch rebuild now and see how it goes
17:30 Zoffix m: for ^4 .race(:batch) { sleep 1 }; say now - INIT now
17:30 camelia rakudo-moar cf1673d9c: OUTPUT: «4.00939985␤»
17:30 Zoffix m: for $ = ^4 .race(:batch) { sleep 1 }; say now - INIT now
17:30 camelia rakudo-moar cf1673d9c: OUTPUT: «1.004317454␤»
17:31 Zoffix Wonder if there's a real-life code that'd suffer from this; a for loop becoming hyper just 'cause it got a contend hyper seq
17:31 Zoffix (or race*)
17:31 Zoffix *conted
17:33 Zoffix m: my $stuff = (1, 2, 3); for $stuff { .^name.say; sleep 1 }; say now - INIT now
17:33 camelia rakudo-moar cf1673d9c: OUTPUT: «List␤1.0020388␤»
17:34 Zoffix 'cause here the semantics is just to use List as an item, but with Hyper/RaceSeq, semantics is call .map on them
17:34 Zoffix s: ^4 .hyper, 'item', \()
17:34 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/cf1673d9c/src/core/Iterable.pm#L17
17:36 Zoffix ah, k, looks like just an omission with an easy fix
17:38 timotimo good catch
17:53 ilbot3 joined #perl6-dev
17:53 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
17:59 jnthn m: for $ = ^4 .race(:batch) { say .perl }
17:59 camelia rakudo-moar cf1673d9c: OUTPUT: «RaceSeq.new(configuration => HyperConfiguration.new(batch => 1, degree => 4))␤»
17:59 jnthn It's not doing a race at all
17:59 jnthn It's doing a single iteration with the item
18:00 jnthn So I think it's fine?
18:00 jnthn dinner, bbs
18:01 Zoffix jnthn: yeah, I misread the results
18:02 Zoffix (in that case it goes through Any.map anyway and gets rehypered
18:02 Zoffix )
18:04 coverable6 joined #perl6-dev
18:04 bloatable6 joined #perl6-dev
18:04 quotable6 joined #perl6-dev
18:04 evalable6 joined #perl6-dev
18:05 timotimo so, should we have a Promise:U candidate for keep and break or methods like "already-kept" and "already-broken"?
18:05 timotimo IMO Promise:U candidates would be nicely consistent
18:08 Zoffix modules site build finished without issues… no idea why it lost half the modules today :/
18:10 perlpilot timotimo: what would Promise:U candidates for keep/break return?
18:10 timotimo a promise that has already been kept or broken
18:11 timotimo so you don't have to my $foo = Promise.new; $foo.keep(1); return $foo
18:11 AlexDaniel` joined #perl6-dev
18:19 |Tux| Done! Text::CSV in sync with Text::CSV_XS (and ilmari, they both throw an exception)
18:19 |Tux| will re-release the perl5 version later
18:25 lizmat [Tux]++
18:32 evalable6 joined #perl6-dev
18:33 jnthn timotimo: I think Promise.kept(value) and Promise.broken(Str|Exception) would be nicest
18:33 jnthn I'd rather not have .keep and .break on an accidentally undefined Promise do something other than complain
18:38 AlexDaniel` hah, “??” :) https://news.ycombinator.com/item?id=15507311
18:39 Zoffix The 6lang/slang thing kinda flopped
18:39 Zoffix People got pissed, confused, or didn't like it
18:39 Zoffix pissed as in angry, not as in drunk
18:41 AlexDaniel` the only angriness I saw was about pronouncing it as “slang”
18:42 AlexDaniel` but I didn't really try to follow the reactions
18:44 AlexDaniel` well, and also about inverted 6 as in dlang :)
18:45 Zoffix AlexDaniel`: this to me read as quite pissed: https://irclog.perlgeek.de/perl6/2017-09-29#i_15233781
18:45 Zoffix Double-loud, coming from a core dev :)
18:45 Zoffix AlexDaniel`: yeah, the inverted 6 thing didn't help either :)
18:54 ugexe the PAS\nS thing is zef. it doesn't use .lines when tapping proc output, so buffer changes would expose this
18:55 AlexDaniel` Zoffix: the pissed part there comes because of us jumping back and forth like idiots… that said, the “consensus” part has to be defined first for me to take it seriously
18:55 AlexDaniel` PR disaster is what we have now, I see no way to make it worse tbh
18:55 [Coke] ... hold my beer
18:56 AlexDaniel` by “now” I mean that there was no change after “rakudo” or “6lang” proposals in that sense
18:56 [Coke] 18:56 < AlexDaniel`> by “now” I mean that there was no change after “rakudo” or
18:56 [Coke] ... weird. mis clicked twic to get that, oops
19:15 * Zoffix sees no PR disasters
19:17 Zoffix In fact, recently I see just wins. Unless it's observational bias.
19:24 cognominal joined #perl6-dev
19:28 Geth ¦ rakudo/nom: f980cdafe4 | (Elizabeth Mattijsen)++ | src/core/Promise.pm
19:28 Geth ¦ rakudo/nom: Make creating a Promise a bit cheaper
19:28 Geth ¦ rakudo/nom:
19:28 Geth ¦ rakudo/nom: - is default is compile time, as opposed to BUILD init which is runtime
19:28 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f980cdafe4
19:28 Zoffix In fact, started this day with seeing someone with 13100 followers tweet about Perl6: https://twitter.com/francesc/status/920359302728245249
19:28 Zoffix ZofBot: the PR is in the eye of the beholder
19:28 ZofBot Zoffix, Enter from hunting Who is this?- my niece, that flies away so fast? Cousin, a word: where is your husband? If do dream, would all my wealth would wake me! If do wake, some planet strike me down, That may slumber an eternal sleep! Speak, gentle niece
19:39 AlexDaniel` “#Perl” “6”
19:39 AlexDaniel` yeah right
19:40 Zoffix Wow. Way to find a negative in a very positive situation
19:40 Zoffix .hug AlexDaniel`
19:40 * huggable hugs AlexDaniel`
19:40 AlexDaniel` Zoffix: sorry :)
19:58 Geth ¦ nqp: tbrowder++ created pull request #375: start new doc for built-ins; fix typo
19:58 Geth ¦ nqp: review: https://github.com/perl6/nqp/pull/375
20:11 tbrowder i just submitted an npq doc PR #305 which i will merge after travis shows a good build; however, appveyor already shows a failure which i do not know how to fix. can anyone help?
20:11 tbrowder s/305/375/
20:12 tbrowder s/npq/nqp/ (argh!! stupid computer)
20:14 moritz looks like a problem with the CI setup, not with your commits
20:17 lizmat decommute&
20:20 Geth ¦ nqp: c21a423ca2 | (Tom Browder)++ | 2 files
20:20 Geth ¦ nqp: start new doc for built-ins; fix typo
20:20 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/c21a423ca2
20:20 Geth ¦ nqp: 5bbb229aa4 | (Tom Browder)++ | docs/built-ins.md
20:20 Geth ¦ nqp: fix format
20:20 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/5bbb229aa4
20:20 Geth ¦ nqp: e79c4f9833 | (Tom Browder)++ (committed using GitHub Web editor) | 2 files
20:20 Geth ¦ nqp: Merge pull request #375 from tbrowder/built-ins
20:20 Geth ¦ nqp:
20:20 Geth ¦ nqp: start new doc for built-ins; fix typo
20:20 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/e79c4f9833
20:26 timotimo jnthn: a very sensible objection
20:29 timotimo huh. we .break() a promise by breaking its vow with just False, eh?
20:35 Geth ¦ rakudo/promise_constructors_kept_broken: 270e7c8a72 | (Timo Paulssen)++ | src/core/Promise.pm
20:35 Geth ¦ rakudo/promise_constructors_kept_broken: Promise.kept and .broken constructors for kept/broken promises
20:35 Geth ¦ rakudo/promise_constructors_kept_broken:
20:35 Geth ¦ rakudo/promise_constructors_kept_broken: can be super useful to have short-hand for sometimes.
20:35 Geth ¦ rakudo/promise_constructors_kept_broken: review: https://github.com/rakudo/rakudo/commit/270e7c8a72
20:36 timotimo ^- later on this could be rewritten to immediately call bless or something, and even skip the condvar/lock entirely
20:38 jnthn False? Hmm
20:38 timotimo it doesn't look like it's tested in roast, though
20:38 jnthn m: my $p = Promise.new; $p.break(False); await $p
20:38 camelia rakudo-moar f980cdafe: OUTPUT: «An operation first awaited:␤  in block <unit> at <tmp> line 1␤␤Died with the exception:␤    False␤      in block <unit> at <tmp> line 1␤␤»
20:39 jnthn I think that's weird, probably "Died" would be better
20:39 jnthn m: die
20:39 camelia rakudo-moar f980cdafe: OUTPUT: «Died␤  in block <unit> at <tmp> line 1␤␤»
20:39 timotimo yeah
20:39 jnthn So it matches that
20:39 jnthn Or some such
20:39 timotimo i'll implement that and also add tests for everything
20:39 jnthn Oh
20:39 jnthn We should add a Str candidate too
20:39 jnthn So you can Promise.broken("eggs")
20:40 jnthn Otherwise, looks fine enough; we can optimize it later :)
20:40 timotimo you mean if you pass a string it'll have Broken status but won't die?
20:40 timotimo despite the argument being called "exception" it can just as well be a Str
20:41 timotimo perl6 -e 'my Promise $foo .= broken("eggs"); say await $foo'  -  gives [...] Died with the exception:     eggs
20:42 timotimo it's the rv!break that actually wraps it in an X::AdHoc if it's not an Exception yet
20:45 jnthn Oh, duh, I somehow read a type constraint where there is none :)
20:45 jnthn OK, then the patch is fine
20:45 jnthn timotimo++
20:46 timotimo yay
21:00 Geth ¦ rakudo/nom: 270e7c8a72 | (Timo Paulssen)++ | src/core/Promise.pm
21:00 Geth ¦ rakudo/nom: Promise.kept and .broken constructors for kept/broken promises
21:00 Geth ¦ rakudo/nom:
21:00 Geth ¦ rakudo/nom: can be super useful to have short-hand for sometimes.
21:00 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/270e7c8a72
21:00 Geth ¦ rakudo/nom: ee3f0f4fb8 | (Timo Paulssen)++ | src/core/Promise.pm
21:00 Geth ¦ rakudo/nom: "Died" shall be default for breaking promises
21:00 Geth ¦ rakudo/nom:
21:00 Geth ¦ rakudo/nom: to mirror what die without arguments does.
21:00 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ee3f0f4fb8
21:01 Geth ¦ roast: 6eb5a91c98 | (Timo Paulssen)++ | S17-promise/basic.t
21:01 Geth ¦ roast: test default values for Promise.keep and .break
21:01 Geth ¦ roast:
21:01 Geth ¦ roast: (they are True and "Died" respectively)
21:01 Geth ¦ roast: review: https://github.com/perl6/roast/commit/6eb5a91c98
21:01 Geth ¦ roast: 878d5d1ca6 | (Timo Paulssen)++ | S17-promise/basic.t
21:01 Geth ¦ roast: test Promise.kept and Promise.broken constructors
21:01 Geth ¦ roast: review: https://github.com/perl6/roast/commit/878d5d1ca6
21:20 Zoffix Some in-buffer tests might need extra love on Windows. Unsure how the new-line translation will mess with buffered .get tests yet.
21:32 xi- joined #perl6-dev
21:37 MasterDuke joined #perl6-dev
21:47 xi- joined #perl6-dev
21:50 Zoffix What chars other than \n guarantee no more combiners will be further up?
21:50 xi- joined #perl6-dev
21:51 timotimo all ascii control characters
21:51 timotimo except for \r
21:52 Zoffix m: "\0".uninprop.say
21:52 camelia rakudo-moar ee3f0f4fb: OUTPUT: «No such method 'uninprop' for invocant of type 'Str'. Did you mean any of these?␤    uniprop␤    uniprops␤␤  in block <unit> at <tmp> line 1␤␤»
21:52 Zoffix m: "\0".uniprop.say
21:52 camelia rakudo-moar ee3f0f4fb: OUTPUT: «Cc␤»
21:52 timotimo .o( muninprop )
21:56 lizmat joined #perl6-dev
22:00 tadzik joined #perl6-dev
22:01 Zoffix hm, t/02-rakudo/repl.t hangs for me
22:01 Zoffix m: "it is <my others'>.pick() changes".say
22:01 camelia rakudo-moar ee3f0f4fb: OUTPUT: «it is <my others'>.pick() changes␤»
22:02 Zoffix m: "it is @(<my others'>).pick() changes".say
22:02 camelia rakudo-moar ee3f0f4fb: OUTPUT: «it is my changes␤»
22:02 Zoffix :(
22:02 timotimo ;(
22:20 Zoffix definitely me :) Have a gazillion spectest failures :)
22:21 Zoffix hm.. "Out of range: attempted to read 0 bytes from filehandle"
22:21 ilmari[m] joined #perl6-dev
22:21 AlexDaniel joined #perl6-dev
22:21 CIAvash[m] joined #perl6-dev
22:21 Zoffix ah
22:59 Geth ¦ nqp: f4f1a78881 | (Tom Browder)++ (committed using GitHub Web editor) | docs/built-ins.md
22:59 Geth ¦ nqp: completely spell arg
22:59 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/f4f1a78881
23:18 Zoffix finally fixed the issue :)
23:18 Zoffix That was a tasty 1h bowl of spaghetti :)
23:19 Zoffix (io_operators creates handles by binding all the attributes, so had to stick new attrs there too)
23:20 Zoffix oh, ha, #Diwali is trending :)
23:36 Geth ¦ rakudo/nom: 5cd7c72878 | (Zoffix Znet)++ | src/core/io_operators.pm
23:36 Geth ¦ rakudo/nom: Remove trailing whitespace
23:36 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5cd7c72878
23:36 Geth ¦ rakudo/nom: 1e5d6f0d4e | (Zoffix Znet)++ | 2 files
23:36 Geth ¦ rakudo/nom: Implement knob to weak IO::Handle input buffer
23:36 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1e5d6f0d4e
23:38 Geth ¦ roast: 167e3eff25 | (Zoffix Znet)++ | S32-io/in-buffering.t
23:38 Geth ¦ roast: Test IO::Handle in-buffer
23:38 Geth ¦ roast:
23:38 Geth ¦ roast: Rakudo impl: https://github.com/rakudo/rakudo/commit/1e5d6f0d4e
23:38 Geth ¦ roast: review: https://github.com/perl6/roast/commit/167e3eff25
23:40 Geth ¦ rakudo/nom: dd50d0f02e | (Zoffix Znet)++ | t/spectest.data
23:40 Geth ¦ rakudo/nom: Add buffering test files to list of files to run
23:40 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dd50d0f02e
23:49 Geth ¦ nqp: 5bc5ead3f5 | (Tom Browder)++ (committed using GitHub Web editor) | src/core/Regex.nqp
23:49 Geth ¦ nqp: make descrip arg name correct
23:49 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/5bc5ead3f5

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary