Perl 6 - the future is here, just unevenly distributed

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

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

All times shown according to UTC.

Time Nick Message
00:08 AlexDaniel hmmm ok now I see an issue
00:08 AlexDaniel greppable6: rakudobrew
00:08 greppable6 AlexDaniel, https://gist.github.com/a5f1e73df558d9085a287f901d78209a
00:09 Zoffix lulz
00:09 AlexDaniel hm not that bad actually
00:10 Zoffix Yeah, 'cause it pulls latest rakudobrew
00:10 AlexDaniel but doc repo hardcodes moar in the path: https://github.com/perl6/doc/blob/master/.travis.yml#L43
00:10 * Zoffix starts on rakudo.org announce
00:10 AlexDaniel nom*
00:10 AlexDaniel greppable6: \bnom\b
00:10 greppable6 AlexDaniel, https://gist.github.com/c81baa2364c37fd034390863808f4cec
00:10 AlexDaniel greppable6: \bmoar-nom\b
00:10 greppable6 AlexDaniel, https://gist.github.com/041e5c48b1ee6ea7241d08577d2d3ef0
00:11 Zoffix Why do so many emails say "[ANNOUNCE]" in the subject instead of "[ANNOUNCEMENT]" ?
00:11 Zoffix |18d update all certs in rakudo.party
00:11 ZofBot Zoffix, Will remind you on 2017-11-13T20:11:36.604420-04:00 about update all certs in rakudo.party
00:12 AlexDaniel I'm just a sheeple! I send whatever is given to me by the script!
00:13 AlexDaniel hm I guess that's not how you use the word, and I'm just a stupid sheep
00:14 Zoffix AlexDaniel: well I did the same thing. Just always wondered :)
00:14 Zoffix "! [remote rejected] nom -> nom (protected branch hook declined)"
00:14 * Zoffix tries to bypass
00:14 AlexDaniel I think you'll need to submit a pull request
00:14 AlexDaniel and probably someone else will have to approve it :D
00:14 Zoffix I already committed :)
00:14 AlexDaniel :(
00:15 AlexDaniel but I don't see any commit
00:15 Geth ¦ rakudo/nom: 1251f771c4 | (Zoffix Znet)++ | tools/build/gen-cat.nqp
00:15 Geth ¦ rakudo/nom: Display notice that `nom` was renamed
00:15 Geth ¦ rakudo/nom:
00:15 Geth ¦ rakudo/nom: The message is actually displayed twice: for 6.c setting and 6.d
00:15 Geth ¦ rakudo/nom: setting, but I figure that's good 'nuf and don't gotta be perfect.
00:15 Geth ¦ rakudo/nom:
00:15 Geth ¦ rakudo/nom: Twice is good.
00:15 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1251f771c4
00:15 AlexDaniel what did you do by the way?
00:16 Zoffix ZofBot: I'm a 1337 hax0r. No protections can stop me!
00:16 ZofBot Zoffix, ' 'Sing,' said the agent
00:16 Zoffix ^_^
00:17 timotimo Zoffix: FFR, a very big portion of nqp ops are tested in the nqp repo's t folder, surely there's a test for read_fhb that makes it work
00:17 Zoffix timotimo: noted. I found the way to do it by reading src/IO file in nqp :)
00:19 timotimo what did i mean by FFR?
00:19 AlexDaniel ok, interestingly now you cannot just merge a PR into nom
00:20 AlexDaniel because it needs a review! :)
00:20 AlexDaniel that's not perfect but good enough
00:21 Zoffix timotimo: "For Future Reference"
00:21 timotimo ah!
00:21 timotimo i thought it should have been "for the record"
00:21 ugexe do all PRs have to be changed to target master now?
00:21 ugexe existing PRs
00:22 AlexDaniel ugexe: you just click “edit” and change nom to master
00:22 AlexDaniel that's it
00:23 AlexDaniel someone can go through all 46 and do that, but I can't be assed because you can't merge into nom anyway
00:23 AlexDaniel at least not easily
00:33 bloatable6 joined #perl6-dev
00:35 travis-ci joined #perl6-dev
00:35 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make sure we don't use nqp::clone
00:35 travis-ci https://travis-ci.org/rakudo/rakudo/builds/293197756 https://github.com/rakudo/rakudo/compare/fa69e4a3c529...6eb576ba7054
00:35 travis-ci left #perl6-dev
00:36 Zoffix ⚠️⚠️⚠️⚠️⚠️⚠️⚠️ ❗❗❗❗ ❕❕❕❕
00:36 Zoffix NOTICE: Main Development Branch Renamed from “nom” to “master”: http://rakudo.org/2017/10/27/main-development-branch-renamed-from-nom-to-master/
00:36 Zoffix ⚠️⚠️⚠️⚠️⚠️⚠️⚠️ ❗❗❗❗ ❕❕❕❕
00:37 MasterDuke Zoffix: "be means"
00:38 Zoffix Thanks. Fixed
00:38 MasterDuke Zoffix++, AlexDaniel++, samcv++
00:47 BenGoldberg m: say 1.0/998001
00:47 camelia rakudo-moar b07e7b1d0: OUTPUT: «0.0000010␤»
00:47 BenGoldberg m: printf '%12f', 1.0/998001
00:47 camelia rakudo-moar b07e7b1d0: OUTPUT: «    0.000001»
00:47 BenGoldberg m: printf '%.12f', 1.0/998001
00:47 camelia rakudo-moar b07e7b1d0: OUTPUT: «0.000001002003»
00:47 BenGoldberg m: printf '%.80f', 1.0/998001
00:47 camelia rakudo-moar b07e7b1d0: OUTPUT: «0.00000100200300400501000000000000000000000000000000000000000000000000000000000000»
00:50 BenGoldberg m: printf '%.80f', 1.0/81
00:50 camelia rakudo-moar b07e7b1d0: OUTPUT: «0.01234567901234570000000000000000000000000000000000000000000000000000000000000000»
00:50 BenGoldberg m: printf '%.80f', 1.0/99**2
00:50 camelia rakudo-moar b07e7b1d0: OUTPUT: «0.00010203040506070800000000000000000000000000000000000000000000000000000000000000»
00:53 BenGoldberg m: printf '%.80f', FatRat.new(99**2, 1)
00:53 camelia rakudo-moar 1251f771c: OUTPUT: «9801.00000000000000000000000000000000000000000000000000000000000000000000000000000000»
00:53 BenGoldberg m: printf '%.80f', FatRat.new(1, 99**2)
00:53 camelia rakudo-moar 1251f771c: OUTPUT: «0.00010203040506070800000000000000000000000000000000000000000000000000000000000000»
00:53 BenGoldberg m: say FatRat.new(1, 99**2).base-repeating: 10
00:53 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969799)␤»
00:53 BenGoldberg m: say FatRat.new(1, 999**2).base-repeating: 10
00:53 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 0000010020030040050060070080090100110120130140150160170180190200210220230240250260270280290300310320330340350360370380390400410420430440450460470480490500510520530540550560570580590600610620630640650660670680690700710720730740750760770780790800810…»
00:54 BenGoldberg m: say Rat.new(1, 999**2).base-repeating: 10
00:54 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 0000010020030040050060070080090100110120130140150160170180190200210220230240250260270280290300310320330340350360370380390400410420430440450460470480490500510520530540550560570580590600610620630640650660670680690700710720730740750760770780790800810…»
00:54 BenGoldberg m: say Rat.new(1, 9999**2).base-repeating: 10
00:54 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 0000000100020003000400050006000700080009001000110012001300140015001600170018001900200021002200230024002500260027002800290030003100320033003400350036003700380039004000410042004300440045004600470048004900500051005200530054005500560057005800590060006…»
00:55 BenGoldberg m: say Rat.new(1, 5**2).base-repeating: 5
00:55 camelia rakudo-moar 1251f771c: OUTPUT: «(0.01 )␤»
00:55 BenGoldberg m: say Rat.new(1, 5**2).base-repeating: 6
00:55 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 01235)␤»
00:56 BenGoldberg m: say Rat.new(1, 10**2).base-repeating: 11
00:56 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 012345678A)␤»
00:57 BenGoldberg m: say Rat.new(1, 0xFF**2).base-repeating: 16
00:57 camelia rakudo-moar 1251f771c: OUTPUT: «(0. 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7…»
01:32 tbrowder hi, i just saw the note about rakudo rename of main branch nom to master. i am deep into work on a pod PR branch off of nom. what should i do when it’s ready for a PR? do i need to do anything special now since i rebuild often on my PR branch?
01:33 greppable6 joined #perl6-dev
01:37 AlexDaniel tbrowder: chances are there's nothing you should do
01:38 AlexDaniel tbrowder: you PR will be from your nom to rakudo's master
01:41 AlexDaniel yeah, that's it. When you click “pull request” you'll just choose master
01:41 AlexDaniel you can choose nom and we will change it to master ourselves.
01:41 AlexDaniel (this is what we'll do for existing PRs anyway)
01:42 AlexDaniel the change is so minor that I'm really surprised that we got to it now and not earlier
01:55 AlexDaniel the only issue right now is people using rakudobrew with hardcoded moar-nom path
01:55 AlexDaniel well, and also that all devs have to adapt
01:58 ilbot3 joined #perl6-dev
01:58 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
01:59 tbrowder thank you
02:12 AlexDaniel ===SORRY!=== Object of type IO in QAST::WVal, but not in SC
02:12 AlexDaniel ಠ_ಠ
02:13 Zoffix AlexDaniel: what's that from?
02:14 AlexDaniel my 260 line script, right now not sure what exactly causes it
02:14 Zoffix Ah ok
02:17 travis-ci joined #perl6-dev
02:17 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Turns out we can nqp::clone after all
02:17 travis-ci https://travis-ci.org/rakudo/rakudo/builds/293203502 https://github.com/rakudo/rakudo/compare/6eb576ba7054...2aaa32c961e1
02:17 travis-ci left #perl6-dev
02:21 AlexDaniel :|
02:27 AlexDaniel hehe, the NOTICE is shown 5 times I think
02:27 Zoffix Should be just twice
02:28 Zoffix It's shown when a settings is generated
02:28 AlexDaniel well, I just had to press enter five times for five notices… :)
02:28 AlexDaniel ok now again
02:29 AlexDaniel yeah, two times, and around 5 times before that
02:29 Zoffix You got a bug in your rakudo and it keeps recompiling and fails and tries again
02:29 Zoffix (guessing)
02:29 AlexDaniel succeeded just fine
02:29 Zoffix cra[
02:30 Zoffix when `rakudobrew`ing, the notice just slides through. It doesn't pause
02:30 AlexDaniel that was from rakudobrew
02:31 Zoffix Ok, I think it stopped to wait a second time (newline char hanging around from ENTER from running `rakudobrew build blah` for the first one?)
02:31 Zoffix Ah, OK, I see that script is used for Other Things too
02:31 Zoffix to build nqp
02:31 AlexDaniel let's not ask to press ENTER maybe?
02:32 AlexDaniel that's probably too early
02:32 Zoffix Then what's the point of showing the message?
02:33 AlexDaniel meh… good point
02:33 ugexe maybe not all tooling is ready to deal with interaction required
02:34 Zoffix Interaction isn't required. Anything that uses nom shouldn't be using it.
02:35 ugexe thats what deprecation messages usually point out yes
02:35 AlexDaniel I was thinking that if something is still using nom then it'll just get a good stable version
02:35 ugexe for instance: travis is backed by rakudobrew
02:35 AlexDaniel and once people notice they'll switch
02:36 Zoffix yes, and failures will actually alert users to fix their stuff
02:37 ugexe users usually want notice if its possible
02:38 AlexDaniel fuck. I think something is broken
02:38 AlexDaniel alright, let's see if someone else can reproduce it
02:39 AlexDaniel use Image::Magick:from<Perl5>; sub MAIN(IO $foo) {}
02:39 MasterDuke nice. converting Int.new to use my new nqp::fromI_I passes spectest
02:39 AlexDaniel for that you need ‘libimage-magick-perl’ package if you're using debian
02:39 AlexDaniel or whatever, you can install Image::Magick perl5 module any way you like
02:40 AlexDaniel so I get:
02:40 AlexDaniel ===SORRY!===
02:40 AlexDaniel Object of type IO in QAST::WVal, but not in SC
02:40 AlexDaniel and that was working just fine right before the release?
02:41 Zoffix ugexe: we got keys to both travis perl6 setup and rakudobrew. I think we can sneak in some env var to disable notice's blockage (I'm adding a switch right now)
02:42 ugexe yes, thats certainly one way. it would have been nice if we had thought this through more is my point.
02:43 Zoffix yeah :)
02:43 AlexDaniel the message that requires user input should be thought through, the branch switch by itself is harmless…
02:44 ugexe we don't know this. it ignores any automation anyone has setup that we don't know about
02:45 Geth ¦ rakudo/nom: 4fca947436 | (Zoffix Znet)++ | tools/build/gen-cat.nqp
02:45 Geth ¦ rakudo/nom: Revert "Display notice that `nom` was renamed"
02:45 Geth ¦ rakudo/nom:
02:45 Geth ¦ rakudo/nom: This reverts commit 1251f771c4085557bccf3dc4c0b33458e74b0c79.
02:45 Geth ¦ rakudo/nom:
02:45 Geth ¦ rakudo/nom: https://irclog.perlgeek.de/perl6-dev/2017-10-27#i_15360592
02:45 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4fca947436
02:46 AlexDaniel I don't get it. If you have nom hardcoded, then you'll be using nom. The only way it can break is if you use the default branch and blindly assume that it is “nom”
02:46 * Zoffix goes to bed
02:46 ugexe yes everything is probably fine, but if we aren't aware that it -could- have been problematic then i'd say we jumped the gun
02:46 AlexDaniel argh…
02:48 AlexDaniel no we did the right thing. If we start thinking about improbable chances then it will go on for several extra years
02:48 ugexe breaking build systems is a sure fire ticket to piss off developers
02:49 ugexe care should be taken around these things
02:49 * AlexDaniel facepalms
02:49 AlexDaniel the only difference is the default branch you get
02:49 AlexDaniel which affects nothing
02:50 AlexDaniel oh, that you get when you clone *initially*
02:51 AlexDaniel so in order for it to break you'd have to be cloning stuff from scratch regularly, *and* having “nom” hardcoded in some impossible way
02:51 ugexe my initial thought is switching for 6.d would have made more sense, but i havent given this much thought beyond the last 30 minutes
02:52 AlexDaniel /o\
02:53 AlexDaniel how is the language version related to the default branch of a freaking compiler
02:53 AlexDaniel ok enough.
02:53 Zoffix .hug ZofBot
02:53 * huggable hugs ZofBot
02:53 ugexe ok enough what?
02:53 AlexDaniel enough nonsense
02:54 Zoffix For 6.d: we could intitute a policy about things like these.
02:57 Geth ¦ 6.d-prep: 69c81dfee2 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/README.md
02:57 Geth ¦ 6.d-prep: TODO: Define More Concrete Policies For Deprecations/Changes with Large Impact
02:57 Geth ¦ 6.d-prep: review: https://github.com/perl6/6.d-prep/commit/69c81dfee2
02:59 AlexDaniel fwiw how exactly rakudobrew is supposed to adapt is a good question
03:00 AlexDaniel and that can be given some thought while the rest is already switching
03:19 Geth ¦ nqp: MasterDuke17++ created pull request #378: Add the new coerce_II op as fromI_I
03:19 Geth ¦ nqp: review: https://github.com/perl6/nqp/pull/378
03:22 Geth ¦ rakudo: MasterDuke17++ created pull request #1217: Use the new nqp::fromI_I in Int.new
03:22 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1217
03:23 travis-ci joined #perl6-dev
03:23 travis-ci Rakudo build passed. Aleks-Daniel Jakimenko-Aleksejev '[release] Bump VERSION to 2017.10'
03:23 travis-ci https://travis-ci.org/rakudo/rakudo/builds/293402644 https://github.com/rakudo/rakudo/compare/2aaa32c961e1...e6c6ed2b5b40
03:23 travis-ci left #perl6-dev
03:30 AlexDaniel hmm it seems that “Object of type IO in QAST::WVal, but not in SC” issue is not that new
03:32 AlexDaniel anyway, good * everyone, here's something to play with: perl6 -e 'use JSON:from<Perl5>; sub foo(IO $foo) {}'
03:43 ugexe `use JSON:from<Perl5>; sub foo(IO::Path $foo) { }` ===SORRY!=== Error while compiling -e Invalid typename 'IO::Path' in parameter declaration. at -e:1
03:49 ugexe m: use JSON:from<Perl5>; sub foo(IO::Path $a) { }
03:49 camelia rakudo-moar 4fca94743: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Invalid typename 'IO::Path' in parameter declaration.␤at <tmp>:1␤------> 3use JSON:from<Perl5>; sub foo(IO::Path7⏏5 $a) { }␤»
03:50 AlexDaniel star: use JSON:from<Perl5>; sub foo(IO::Path $a) { }
03:50 camelia star-m 2017.07: OUTPUT: «===SORRY!===␤Please install Inline::Perl5 for Perl 5 support. ␤»
03:56 ugexe i wonder if a perl5 IO / IO::Path namespace is escaping its proper scope
03:56 ugexe m: use JSON:from<Perl5>; sub foo(Channel $a) { }
03:56 camelia rakudo-moar 4fca94743: ( no output )
04:00 ugexe nine: ^ might be of interest
04:38 travis-ci joined #perl6-dev
04:38 travis-ci Rakudo build passed. Zoffix Znet 'Merge pull request #1215 from rakudo/zoffer-post-release
04:38 travis-ci https://travis-ci.org/rakudo/rakudo/builds/293409356 https://github.com/rakudo/rakudo/compare/e6c6ed2b5b40...b07e7b1d0ffc
04:38 travis-ci left #perl6-dev
05:27 travis-ci joined #perl6-dev
05:27 travis-ci Rakudo build passed. Aleks-Daniel Jakimenko-Aleksejev '⚠ “nom” → “master”
05:27 travis-ci https://travis-ci.org/rakudo/rakudo/builds/293419389 https://github.com/rakudo/rakudo/compare/b07e7b1d0ffc...f40babb81e6b
05:27 travis-ci left #perl6-dev
06:04 travis-ci joined #perl6-dev
06:04 travis-ci Rakudo build errored. Zoffix Znet 'Display notice that `nom` was renamed
06:04 travis-ci https://travis-ci.org/rakudo/rakudo/builds/293432299 https://github.com/rakudo/rakudo/compare/b07e7b1d0ffc...1251f771c408
06:04 travis-ci left #perl6-dev
06:04 buggable [travis build above] ✓ All failures are due to: timeout (3 failures).
06:41 [Tux] Rakudo version 2017.10-4-g4fca94743 - MoarVM version 2017.10-1-g213fc774
06:41 [Tux] csv-test-xs-20      0.437 -  0.471
06:42 [Tux] csv-ip5xs           1.247 -  1.330
06:42 [Tux] test-t              3.159 -  3.199
06:42 [Tux] test               12.185 - 12.314
06:42 [Tux] csv-parser         11.960 - 12.558
06:42 [Tux] csv-ip5xs-20       14.197 - 14.714
06:42 [Tux] test-t-20 --race   20.596 - 21.681
06:42 [Tux] test-t-20          59.614 - 61.442
06:59 pmurias joined #perl6-dev
07:13 lizmat joined #perl6-dev
07:19 patrickz joined #perl6-dev
07:59 stmuk TAP::Harness fails tests for me now
08:20 Geth ¦ rakudo: c15e80de19 | (Elizabeth Mattijsen)++ | src/core/IterationBuffer.pm
08:20 Geth ¦ rakudo: Streamline IterationBuffer a bit
08:20 Geth ¦ rakudo:
08:20 Geth ¦ rakudo: - .elems and .push are no longer multis
08:20 Geth ¦ rakudo: - give AT-POS its own proto just like BIND-POS
08:20 Geth ¦ rakudo:   - no other AT-POS will work anyway
08:20 Geth ¦ rakudo: - make sure AT-POS/BIND-POS only take definite Ints
08:20 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/c15e80de19
08:32 lizmat .
08:35 Ven joined #perl6-dev
08:48 lizmat hmmm... I can t/spec/S17-lowlevel/cas-loop-int.t to segfault quite reliable in test 4 when run in conjunction with a spectest
08:48 lizmat *reliably
08:49 lizmat abut 1/4 times
08:49 Geth ¦ rakudo: b849622ee2 | (Elizabeth Mattijsen)++ | src/core/native_array.pm
08:49 Geth ¦ rakudo: Make .sum on native num arrays about 11x faster
08:49 Geth ¦ rakudo:
08:49 Geth ¦ rakudo: - on a 5 element num array
08:49 Geth ¦ rakudo: - could not do that for native int arrays, as ints can overflow
08:49 Geth ¦ rakudo: - should make the ThreadPoolScheduler supervisor leaner
08:49 Geth ¦ rakudo:   - as it calls .sum on a native num array about 100x / sec
08:49 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/b849622ee2
08:53 stmuk TAP::Harness seems OK in the release .. odd
09:13 Ven joined #perl6-dev
09:19 tbrowder hi, in my upcoming table pod PR i will add a pod table debug capability to Pod.nqp to be turned on by an environment variable. i will advertise it to users in the docs. my choice at the moment is either NQP_POD_TABLE_DEBUG or RAKUDO*. any thoughts?
09:23 Geth ¦ rakudo: e513f19dfe | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
09:23 Geth ¦ rakudo: Streamline ThreadPoolScheduler!total-workers
09:23 Geth ¦ rakudo:
09:23 Geth ¦ rakudo: - make sure we don't box/unbox unneccesarily
09:23 Geth ¦ rakudo: - add "is raw" so that we don't box/unbox on return
09:23 Geth ¦ rakudo:   - this appears to make the return from sub about 20% faster
09:23 Geth ¦ rakudo:   - when assigning to a native
09:23 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/e513f19dfe
09:23 lizmat the last two commits appear to shave off about 2.5 msecs / second of the supervisor loop
09:23 lizmat *off of
09:28 lizmat which, on my machine, is now at 37 msecs / second (when not doing anything specifically)
09:28 jnthn lizmat: PLEASE do not nqp::-op concurrency code
09:29 lizmat jnthn: why ?
09:29 jnthn Because I find it a lot harder to follow
09:29 jnthn And concurrency code is already hard enough
09:30 lizmat so revert e513f19dfe ?
09:31 jnthn Well, I guess that one isn't so bad as it's just adding numbers together
09:31 nine By now lizmat++ probably reads nqp ops better than plain English. But that's not true for the rest of us :)
09:31 lizmat nine: yeah, you got a point there  :-)
09:31 jnthn But some of the queue selection stuff elsewhere...
09:32 lizmat yeah, gotcha
09:38 lizmat jnthn: would it be ok to replace the loop { } in XWorker by an nqp::while(1,...) ?\
09:38 lizmat that shouldn't affect readability
09:38 lizmat and it looks like the overhead of loop { } is quite significant
09:39 lizmat $ 6 'my int $a; use nqp; loop { nqp::if(nqp::iseq_i(($a = nqp::add_i($a,1)),1000000), exit) }'
09:39 lizmat real0m0.322s
09:39 lizmat $ 6 'my int $a; use nqp; nqp::while(1,nqp::if(nqp::iseq_i(($a = nqp::add_i($a,1)),1000000), exit))'
09:39 lizmat real0m0.169s
09:39 lizmat also the superviser loop btw
09:41 nine So what does loop {} do, that nqp::while(1, ...) doesn't that makes it so slow?
09:41 lizmat I have no idea
09:42 nine Maybe phaser handling?
09:43 lizmat looks like sinking
09:44 nine Yeah, because apart from that it literally compiles to an nqp::while(1, ...)
09:45 lizmat looks like I won't be able to do it on the supervisor loop, as it has a CATCH block in it
09:46 Ven_ joined #perl6-dev
09:46 stmuk whats the status of non-blocking IO?
09:51 nine Oh, I think it's actually invocation of the loop's block that eats the time there.
09:53 nine I guess we could get away with throwing away a QAST::Block and use it's contents directly in cases when there are no lexicals in the block and &?BLOCK is not accessed
09:54 lizmat --profile shows sink taking 18% of CPU in the loop case, and none in the nqp::while case
10:00 jnthn stmuk: Non-blocking IO - we've non-blocking sockets and processes, which is the main places you'd want to have it.
10:01 stmuk OK thanks I'll update star README to that effect
10:09 Ven joined #perl6-dev
10:10 Zoffix tbrowder: is the env var going into rakudo's repo? Then RAKUDO_* makes more sense as that's what all our other non-PERL6_ env vars have: https://docs.perl6.org/programs/00-running
10:14 lizmat jnthn: changing the loop in the workers from loop { self!run-one } to nqp::while(1, self!run-one ) shaves off about 2% of the test-t-20 race benchmark
10:15 jnthn Cool. Let's improve loop { } code-gen then.
10:15 tbrowder yes, it’s in rakudo’s repo, so RAKUDO* it shall be...thanks. btw, thanks for the doc ref. i keep looking a “debugging” to find the list of env vars and can’t find them...i’ll fix that.
10:16 lizmat afk&
10:35 |Tux| joined #perl6-dev
10:37 Ven_ joined #perl6-dev
10:45 * stmuk pretends to himself that S11-modules/nested.t always passes
10:48 Zoffix |15d What happened with? https://www.reddit.com/r/perl6/comments/78txh8/xpost_perl6_should_be_renamed_perl/doydt90/
10:48 ZofBot Zoffix, Will remind you on 2017-11-11T06:48:00.016652-04:00 about What happened with? https://www.reddit.com/r/perl6/comments/78txh8/xpost_perl6_should_be_renamed_perl/doydt90/
10:48 Zoffix New funding opportunity 😄😄
10:50 stmuk isn't there a better unicode version of ++?
10:50 stmuk ;)
10:50 Zoffix :)
10:51 * lizmat expects chromatic to be the scorned lover to make sure that the donation will not happen
11:01 tadzik m: our $name = "Perl"; $name++; say $name
11:01 camelia rakudo-moar 4fca94743: OUTPUT: «Perm␤»
11:01 yoleaux 00:39Z <AlexDaniel> tadzik: plz https://github.com/tadzik/rakudobrew/pull/127
11:01 tadzik Perm. It's here to stay.
11:01 tadzik AlexDaniel`: cheers
11:03 lizmat tadzik  o/
11:03 lizmat jnthn nine: I assume I need to look at https://github.com/rakudo/rakudo/blob/master/src/Perl6/Actions.nqp#L1943 ??
11:03 tadzik lizmat: o/
11:03 nine lizmat: that's what I'd do
11:06 lizmat do we have some type of AST dump facility in nqp ??   apart from --target=ast ?
11:06 nine lizmat: QAST nodes do have a dump method
11:06 nine returns a string
11:06 lizmat ok
11:08 jnthn Note that --target=optimize (what we get after the optimizer worked at it) is also worth a look
11:11 lizmat pretty sure we should be able to handle that at codegen time, no ?
11:16 jnthn Which "that"?
11:21 lizmat finding out whether we can get rid of the sink at codegen time, rather than at optimize time
11:22 lizmat ah, ok  I see what you mean
11:23 jnthn oops, I forgot lunch
11:23 jnthn bbiab
11:23 lizmat m: class A { method sink { die } }; loop { A.new }
11:23 camelia rakudo-moar 4fca94743: OUTPUT: «Died␤  in method sink at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
11:25 lizmat ok, so how *do* we figure out that we can drop the sink in 'loop {}' if a class could have its own sink with side-effects ?
11:25 lizmat I mean, generally
11:27 lizmat afk again&
12:06 AlexDaniel nine: where should I report 「use JSON:from<Perl5>; sub foo(Channel $a) { }」? Is it a problem of Inline::Perl5 or rakudo?
12:07 AlexDaniel oops not that one
12:07 AlexDaniel m: use JSON:from<Perl5>; sub foo(IO::Path $foo) { }
12:07 camelia rakudo-moar 4fca94743: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Invalid typename 'IO::Path' in parameter declaration.␤at <tmp>:1␤------> 3use JSON:from<Perl5>; sub foo(IO::Path7⏏5 $foo) { }␤»
12:07 AlexDaniel this ↑
12:12 Zoffix I think it's already reported
12:13 Zoffix This one: https://rt.perl.org/Ticket/Display.html?id=130200#ticket-history
12:13 Zoffix Or maybe another one in the similar vein
12:15 Zoffix $ cat Foo.pm
12:15 Zoffix package IO; 1;
12:15 Zoffix $ perl6 -e 'use lib:from<Perl5> <.>; use Foo; say IO::Path'
12:15 Zoffix Could not find symbol '&Path'
12:15 Zoffix in block <unit> at -e line 1
12:17 Zoffix c: HEAD BEGIN "/tmp/zzzzzzzz".IO.mkdir.add("Foo.pm6").spurt: 「class IO {}」; use lib "/tmp/zzzzzzzz"; use Foo; say IO::Path
12:17 committable6 Zoffix, ¦HEAD(e513f19): «(Path)»
12:17 Zoffix OK, nm. Looks like rakudo's issues when one of core namespaces is used is differen
12:28 astj joined #perl6-dev
12:29 Zoffix m: $*TMPDIR.add("Foo.pm").spurt: 「package IO; 1」; use lib:from<Perl5> $*TMPDIR.absolute; say IO::Path
12:29 camelia rakudo-moar 4fca94743: OUTPUT: «Could not find symbol '&Path'␤  in block <unit> at <tmp> line 1␤␤»
12:30 Zoffix "one file" golf :)
12:31 Zoffix m: use lib:from<Perl5> $*TMPDIR # another LTAness; it don't like IO::Path while Rakudo's `use lib` likes it
12:31 camelia rakudo-moar 4fca94743: OUTPUT: «===SORRY!===␤Operation "eq": no method found,␤  left argument in overloaded package Perl6::Object,␤     right argument has no overloaded magic at /usr/lib/perl5/5.18.2/x86_64-linux-thread-multi/lib.pm line 24.␤␤»
12:41 * AlexDaniel is going crazy
12:42 AlexDaniel I'm 100% sure that I was using IO() in a parameter with some inline::perl5 previously and it worked fine
12:42 AlexDaniel … because it was working 1 day ago
12:42 AlexDaniel but I tested on 2017.09 and I get exactly the same behavior
12:43 AlexDaniel hurr
12:54 Geth ¦ synopsebot: 30bec48d43 | (Zoffix Znet)++ (committed using GitHub Web editor) | lib/SB/Plugin/GitHub.pm6
12:54 Geth ¦ synopsebot: Watch for `#foo` issue references from commit messages
12:54 Geth ¦ synopsebot: review: https://github.com/perl6/synopsebot/commit/30bec48d43
12:55 synopsebot joined #perl6-dev
12:56 Geth ¦ roast: 67d9ffecee | (Zoffix Znet)++ (committed using GitHub Web editor) | README.md
12:56 Geth ¦ roast: s/experimental/proposed/;
12:56 Geth ¦ roast:
12:56 Geth ¦ roast: Also: bot test #123
12:56 Geth ¦ roast: review: https://github.com/perl6/roast/commit/67d9ffecee
12:57 synopsebot joined #perl6-dev
12:59 AlexDaniel Zoffix: that's pretty cool
13:06 Geth ¦ synopsebot: 122dc184a5 | (Zoffix Znet)++ (committed using GitHub Web editor) | lib/SB/Plugin/RT.pm6
13:06 Geth ¦ synopsebot: Handle 404 RT ticket pages gracefuler
13:06 Geth ¦ synopsebot: review: https://github.com/perl6/synopsebot/commit/122dc184a5
13:17 Geth ¦ synopsebot: 5fb72da145 | (Zoffix Znet)++ (committed using GitHub Web editor) | lib/SB/Plugin/GitHub.pm6
13:17 Geth ¦ synopsebot: Fix Issue regex
13:17 Geth ¦ synopsebot:
13:17 Geth ¦ synopsebot: Also disallow space before '#' in "R #foo" style
13:17 Geth ¦ synopsebot: review: https://github.com/perl6/synopsebot/commit/5fb72da145
13:18 synopsebot joined #perl6-dev
13:18 Geth_ ¦ rakudo: Fixes #123 and RT#123465
13:19 synopsebot RT#123465 [open]: https://rt.perl.org/Ticket/Display.html?id=123465 [BUG] /+/ is invalid as a literal regex, but causes an infinite loop when passed in as an indirect subrule call in Rakudo
13:19 synopsebot RAKUDO#123 [closed]: https://github.com/rakudo/rakudo/pull/123 For infix:<ne>, use nqp::isne_s instead of !eq
13:19 Geth_ :)
13:21 Zoffix m: if "1" ~~ /(\d)/ -> $ (Str() $_) {.say}
13:21 camelia rakudo-moar 4fca94743: OUTPUT: «Cannot find method 'say': no method cache and no .^find_method␤  in block <unit> at <tmp> line 1␤␤»
13:36 [Coke] #123 closed - it was closed in 2013...
13:51 Zoffix m: 「2013」.comb.grep(?+*).sort.join.say
13:51 camelia rakudo-moar 4fca94743: OUTPUT: «123␤»
13:51 Zoffix \o\ \o/ /o/
13:52 patrickz For a module I'm creating at the moment I have a tester.p6 script for manual testing. In what folder should that go? both /bin and /t seem wrong. /resources?
13:53 DrForr patrickz: If it's something only you will really need, I'd look at xt/
13:53 [Coke] examples/ ?
13:54 patrickz Ah, examples sounds good!
13:54 patrickz oh, wrong channel btw....
14:20 DrForr Shouldn't matter, given traffic levels ATM.
14:57 Zoffix m: 「2013」.comb.Array.rotate.[1,3,2].join.say
14:57 camelia rakudo-moar 4fca94743: OUTPUT: «123␤»
14:59 Zoffix m: .[.grep: ?+*].join.say with 「2013」.comb.List.rotate
14:59 camelia rakudo-moar 4fca94743: OUTPUT: «123␤»
14:59 Zoffix ZofBot: coincidence? I think not!
14:59 ZofBot Zoffix, OK, then the solution I suggested will probably do it
14:59 Zoffix Ok, I'll use your solution then.
15:18 ggoebel joined #perl6-dev
15:33 perlpilot joined #perl6-dev
15:34 Zoffix AlexDaniel: so your PR made `rakudobrew build moar` build `master` branch is that correct? Just wanted to ensure whether to update the notice on rakudo.org the default is `master` now
15:35 AlexDaniel Zoffix: ah yes
15:36 AlexDaniel https://github.com/tadzik/rakudobrew/commit/bdd060c8886da6049f87ea30fdc01dc457747a18
15:36 Zoffix Also, I don't get it… there are TWO PRs with the same changes that say "merged" on both: https://github.com/tadzik/rakudobrew/pull/128/files and https://github.com/tadzik/rakudobrew/pull/127/files
15:36 AlexDaniel so it does, indeed, build master by default, so you get “moar-master”
15:36 AlexDaniel it looks like you can merge same changes :)
15:36 nine AlexDaniel: that's already reported as https://github.com/niner/Inline-Perl5/issues/99
15:37 AlexDaniel nine: ah-ha! OK, thanks!
15:56 Geth ¦ star/master: 10 commits pushed by (Steve Mynott)++
15:56 Geth ¦ star/master: review: https://github.com/rakudo/star/compare/f1ab57cfd1...9bd2678ef9
15:58 stmuk http://pl6anet.org/drop/rakudo-star-2017.10-RC0.tar.gz
16:08 Zoffix w00t
16:11 Zoffix I notice `perl6` executable sometimes doesn't get created. Looks like happens when you got a compilation error, then fix ti
16:11 Zoffix (compilation error in rakudo sauce I mean)
16:12 Zoffix And I'm talking about our build process; not the RC candiate :D
16:16 ugexe ive gotten into a strange situation where I did not have perl6 built, and I could not do any make commands as they failed running a perl6 command for deleting leftover files
16:17 * Zoffix looks at https://irclog.perlgeek.de/perl6/2017-10-27#i_15363232
16:17 Zoffix We really should fix it 'cause otherwise "safe call" op ain't that safe.
16:18 Zoffix And I'll take a messy "Nil" guts over "broken" any day. Make a generator script that just picks all the Cool, Any, Mu methods
16:18 Zoffix m: say Mu.can: 'Str'
16:18 camelia rakudo-moar 4fca94743: OUTPUT: «(Str)␤»
16:18 Zoffix Also `.?Str` is kinda pointless since Mu provides it
16:19 Zoffix Also, `.?` remains not-quite safe since it doesn't guarantee you can actually call the method. I don't really care whether the object CAN do a method, I care about whether I can call it with my args and not have anything explode :/ So IMO `dispatch:<.?>` should be doing `.cando` check too
16:19 Zoffix (in which case the `Nil` won't need to be messy 'cause that won't be needed anymore)
16:24 Geth ¦ 6.d-prep: 17bccb9d3b | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md
16:24 Geth ¦ 6.d-prep: Remove buffer size change
16:24 Geth ¦ 6.d-prep:
16:24 Geth ¦ 6.d-prep: This was already done in 6.c
16:24 Geth ¦ 6.d-prep: review: https://github.com/perl6/6.d-prep/commit/17bccb9d3b
16:25 Geth ¦ 6.d-prep: 949c520f4a | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md
16:25 Geth ¦ 6.d-prep: Remove "Really implement hyper/race on Iterables"
16:25 Geth ¦ 6.d-prep:
16:25 Geth ¦ 6.d-prep: Already done in 6.c
16:25 Geth ¦ 6.d-prep: review: https://github.com/perl6/6.d-prep/commit/949c520f4a
16:31 Geth ¦ 6.d-prep: 931a3b3afb | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md
16:31 Geth ¦ 6.d-prep: TODO: Make `.?` safecall actually safe
16:31 Geth ¦ 6.d-prep: review: https://github.com/perl6/6.d-prep/commit/931a3b3afb
16:32 Zoffix .tell TimToady FWIW there's proposal for 6.d to make `.?` op perform `.cando` check to it'd also check if args can be used.  https://github.com/perl6/6.d-prep/blob/master/TODO/FEATURES.md#make--safecall-actually-safe
16:32 yoleaux Zoffix: I'll pass your message to TimToady.
16:37 greppable6 joined #perl6-dev
16:38 AlexDaniel joined #perl6-dev
16:41 * stmuk wonders why he has bought a book on BCPL
16:49 Geth ¦ rakudo: c9360203eb | (Zoffix Znet)++ | 2 files
16:49 Geth ¦ rakudo: Improve X::ControlFlow::Return error
16:49 Geth ¦ rakudo:
16:49 Geth ¦ rakudo: Don't say we're outside of "any routine" when we're inside of
16:49 Geth ¦ rakudo: one and the error is 'cause we're out of dyn scope.
16:49 Geth ¦ rakudo:
16:49 Geth ¦ rakudo: Fixes #1216
16:49 synopsebot RAKUDO#1216 [closed]: https://github.com/rakudo/rakudo/issues/1216 [LTA] Improve "Return outside of routine" error
16:49 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/c9360203eb
16:49 Zoffix This is handy… You can close issues and link tests from commit messages
16:50 Zoffix This is unhandy… I didn't yet commit tests but github closed the issue via commit message having what could be just descriptive text
16:51 Zoffix Another downfail: roast references reference *an* implementation's tracker
16:55 Geth ¦ roast: f9fb8c9ac2 | (Zoffix Znet)++ | S04-statements/return.t
16:55 Geth ¦ roast: Test `return` out of dyn scope show useful error
16:55 Geth ¦ roast:
16:55 Geth ¦ roast: https://github.com/rakudo/rakudo/issues/1216
16:55 Geth ¦ roast: review: https://github.com/perl6/roast/commit/f9fb8c9ac2
16:56 AlexDaniel I knew about that, but couldn't really decide if it's good or not
16:56 AlexDaniel I think it also understands “resolves #…” a few other words
16:56 ilmari https://help.github.com/articles/closing-issues-using-keywords/
16:57 AlexDaniel it might encourage people to write tests, or at least make them not claim that the issue is resolved when really it's not :)
16:58 AlexDaniel but sometimes it's really annoying, yeah
16:59 Zoffix wow there's a ton of services in "service" settings. They even got an IRC service
17:03 Zoffix You can even close Rakudo issues from Roast commits. Would be sweet if you could disable closage from Rakudo commits and yet still have it from roast commits :D
17:03 Zoffix .oO( have a bot auto-reopen such closures )
17:27 AlexDaniel Zoffix: alright, so what should we do this time for the squashathon? Roast issues?
17:27 AlexDaniel or were there any better ideas
17:28 AlexDaniel squashable6: next
17:28 squashable6 AlexDaniel, ⚠🍕 Next SQUASHathon in 6 days and ≈16 hours (2017-11-04 UTC-12⌁UTC+14). See https://github.com/rakudo/rakudo/wiki/Monthly-Bug-Squash-Day
17:36 Geth ¦ rakudo: 6ac53e4276 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
17:36 Geth ¦ rakudo: Mark all subs/methods not returning anything
17:36 Geth ¦ rakudo:
17:36 Geth ¦ rakudo: - hopefully allowing optimizers to do their thing
17:36 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/6ac53e4276
18:18 bisectable6 joined #perl6-dev
18:18 benchable6 joined #perl6-dev
18:18 committable6 joined #perl6-dev
18:18 squashable6 joined #perl6-dev
18:18 unicodable6 joined #perl6-dev
18:19 Zoffix AlexDaniel: docs
18:20 AlexDaniel again? :S we had it two months ago
18:20 Zoffix So?
18:21 Zoffix It was good. People liked it. It's easy to do. Nice entry point for beginners. People could do roast issues last month for all the TESTNEEDED tickets but weren't that keen to.
18:21 AlexDaniel can't argue with that, it was awesome
18:22 AlexDaniel but I was thinking we could go with at least 3 different things without repeating… but that's kinda arbitrary
18:38 Geth ¦ rakudo: 2cd568f989 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
18:38 Geth ¦ rakudo: Get some more mileage out of push-worker()
18:38 Geth ¦ rakudo:
18:38 Geth ¦ rakudo: - should improve readability
18:38 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/2cd568f989
19:12 Geth ¦ rakudo: 6bf5892125 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
19:12 Geth ¦ rakudo: Only tweak-workers if there's something to tweak
19:12 Geth ¦ rakudo:
19:12 Geth ¦ rakudo: - tweak-workers should now only be called if there's something in the queue
19:12 Geth ¦ rakudo: - by moving the test outside, we don't need to call tweak-workers
19:12 Geth ¦ rakudo: - makes test-t 20 race about 3% faster
19:12 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/6bf5892125
19:24 robertle joined #perl6-dev
19:48 jnthn lizmat++ # 6bf5892125 is a nice, clean, win :)
19:49 lizmat :-)
19:51 jnthn Will have some tuits for moar Perl 6 stuff next week.
19:51 lizmat Cool! :-)
19:51 jnthn If that qqx hang thingy ain't resolved, will look at that
19:51 jnthn Then maybe will see if I can get .race.reduce implemented, as it's probably one of the most valuable missing ones
19:51 lizmat jnthn : re loop { } optimization, I don't see how we can know that we don't need to sink in the general case :-(
19:52 lizmat at least not without deep introspection
19:52 jnthn Is the sink the only significant difference?
19:52 * jnthn was assuming there might be others, but maybe not...
19:52 lizmat yes
19:52 jnthn Did the profile show the sink call as being inlined?
19:53 lizmat JIIted yes, not OSR'd
19:53 lizmat if that's what you mean
19:53 jnthn No, I mean inlined, though I think that info only shows up on the callsites tab
19:53 jnthn uh, call stack tab
19:54 lizmat NaN (NaN%)
19:54 timotimo it'd have an entry on the far right side in the caller's piece
19:54 lizmat JIT compiled: 99.45%
19:55 lizmat that's what I said: NaN% inlined calls
19:55 lizmat SETTING::src/core/Mu.pm:11
19:56 timotimo can youg ive me the code you're profiling?
19:57 lizmat my int $a; use nqp; loop { nqp::if(nqp::iseq_i(($a = nqp::add_i($a,1)),1000000), exit) }
19:58 Geth ¦ rakudo: 6de66df719 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
19:58 Geth ¦ rakudo: Don't shift/push the samples array
19:58 Geth ¦ rakudo:
19:58 Geth ¦ rakudo: - just index % 5 into it since we have a fixed size array
19:58 Geth ¦ rakudo: - rename LAST_UTILS_NUM to NUM_SAMPLES for more readability
19:58 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/6de66df719
20:00 lizmat shave another 1.5% off of test-t 20 race
20:05 timotimo oh? shifting and pushing shouldn't be very bad performance-wise
20:05 timotimo i would have expected % 5 to be more expensive tbh :)
20:06 lizmat well, if we increase the sample array to 8, we could just mask
20:06 lizmat or reduce to 4
20:18 timotimo not sure if that's actually any faster though :D
20:19 lizmat timotimo: a separate benchmark shows that you're right
20:20 lizmat now why am I seeing better results in test-t then ?
20:21 lizmat ah, found it:
20:22 lizmat m: my num @a = 42e0 xx 5; my num $a = 42e0; for ^1000000 { @a.shift; @a.push($a) }; say now - INIT now
20:22 camelia rakudo-moar 4fca94743: OUTPUT: «0.84355598␤»
20:22 lizmat m: my num @a = 42e0 xx 5; my int $i; my num $a = 42e0; for ^1000000 { @a[++$i % 5] = $a }; say now - INIT now
20:22 camelia rakudo-moar 4fca94743: OUTPUT: «0.4188883␤»
20:22 lizmat that's about 2x as fast
20:22 timotimo wow
20:23 AlexDaniel pretty cool
20:23 lizmat oddly enough, if I do .push(42e0), the shift/push case is faster
20:23 lizmat so I assume there's some wonkiness with @a.push($a)
20:23 lizmat perhaps boxing/unboxing ?
20:24 lizmat for the parameter?
20:24 timotimo possible
20:24 timotimo boxing/unboxing would be visible as "lots more gc runs" in the profiler
20:25 lizmat yup: 84 / 29 garbage collections
20:25 timotimo can you try nqp::push and nqp::shift?
20:26 timotimo well, with _n
20:26 lizmat difference in allocations is 1M Num + 1M NumLexRef vs 2M Num
20:28 lizmat m: my num @a = 42e0 xx 5; my num $a = 42e0; use nqp; for ^1000000 { nqp::shift_n(@a); nqp::push_n(@a,$a) }; say now - INIT now
20:28 camelia rakudo-moar 4fca94743: OUTPUT: «0.1178767␤»
20:28 lizmat quite a bit faster
20:28 timotimo bleh :)
20:28 lizmat but jnthn specifically asked me to not use nqp codes
20:29 timotimo to further your intuition of arrays and shifting/pushing, our arrays are implemented as an array of storage slots and a "what's the first element" and "how many elements are used" numbers
20:30 timotimo when you shift and push you end up just wiggling those two numbers forwards until it hits the current "end of allocated array" at which point it moves all data to the front and continues there
20:30 lizmat ok, fair enough
20:30 timotimo if you make the array a noticable bit bigger than how many slots you're using, it'll do the copying less often
20:31 lizmat timotimo: but that's just it: this runs 100x second
20:31 timotimo but with a 5 element array it's probably not noticable anyway
20:31 timotimo like, that still fits into a single cache line :)
20:31 lizmat how about pop / push ?
20:32 lizmat wouldn't that not increase the size?
20:32 lizmat ah, but then we wouldn't have a running average
20:32 timotimo hm, not entirely sure
20:32 timotimo yes, indeed
20:32 timotimo that'd only change the last measurement over and over
20:33 lizmat so, if a process is running for 20 seconds, then this array will have grown to 2K elems in memory
20:34 lizmat will still showing nqp::elems == 5
20:34 timotimo oh no it doesn't grow
20:34 lizmat ah?
20:34 timotimo when it hits the end it moves the stuff to the beginning
20:34 timotimo then there's space again
20:35 timotimo aha
20:35 lizmat hmmm... a simple nqp::setelems(200)/nqp::setelems(5)
20:35 timotimo unshift will make 8 slots of space in the beginning if the "start of array" is at 0
20:35 timotimo but shift and push will just move the storage stuff further and further away from 0 until it hits the end, then it goes back to the beginning
20:35 timotimo i'd not make it too big
20:36 lizmat hmmm.. is that moving thread safe ?
20:36 timotimo nope
20:36 timotimo none of the push/pop/shift/unshift ops ever are
20:37 lizmat no, I mean when it hits the end and it starts moving stuff internally
20:37 lizmat the storage stuff
20:37 timotimo it's safer than resizing is
20:37 timotimo i.e. while it's moving stuff over another accessing code won't be accessing invalid memory
20:38 lizmat ah, the queues are ConcBlockingQueue
20:38 timotimo of course :)
20:42 Zoffix fwiw doesn't look like $per-core-util is used for anything other than storing a value that isn't a per-core util but a rescaled number. perhaps it'd make sense to just move the computation directly where it's being assigned into the array?
20:42 Zoffix oops
20:43 * Zoffix was scrolled up
21:20 stmuk_ joined #perl6-dev
21:34 Geth ¦ rakudo: 6aa150db03 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
21:34 Geth ¦ rakudo: Use shift/push again
21:34 Geth ¦ rakudo:
21:34 Geth ¦ rakudo: - but as nqp::shift/nqp::push, timotimo++ for pointing out
21:34 Geth ¦ rakudo: - don't think it suffers too much in readability from the original shift/push
21:34 Geth ¦ rakudo: - indexing solution was about 2x as fast as the original shift/push
21:34 Geth ¦ rakudo: - this is again 4x faster than the indexing solution
21:34 Geth ¦ rakudo: - shaves off about 1% of test-t 20 race
21:34 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/6aa150db03
21:34 lizmat hope jnthn will forgive me
21:38 hoelzro joined #perl6-dev
21:50 lizmat timotimo: I just noted that nqp::getrusage is not getting JITted
21:50 lizmat that would be a great win, as that is being called 100x per second
21:51 lizmat shouldn't be too hard to JIT, as it only generates a 4 element nqp::list_i
22:00 Geth ¦ rakudo: 09e038cd88 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
22:00 Geth ¦ rakudo: Make getrusage-total a sub
22:00 Geth ¦ rakudo:
22:00 Geth ¦ rakudo: - we only need it in the supervisor loop
22:00 Geth ¦ rakudo: - and it doesn't do anything with self
22:00 Geth ¦ rakudo: - more for readability and scoping than anything else
22:00 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/09e038cd88
22:07 jnthn lizmat: fwiw, it's control flow (instead of loop, while, if, etc.) being rewritten in nqp:: ops that I find hard to follow
22:07 jnthn Individual ops (shift, push, etc.) are fine enough
22:07 yoleaux 22:07Z <lizmat> jnthn: 'time while perl6 -e 'my $a = 0; await start { for ^10000 -> $i { cas $a, -> $b { $b + $i } } } xx 4'; do :; done' segfaults for me within the second generally when run in conjunction with a "TEST_JOBS=8 make spectest"
22:08 lizmat so I think there's still a gremlin in cas() and or atomicints in general
22:24 * dogbert17 suspects the SEGV is triggered here: https://github.com/MoarVM/MoarVM/blob/master/src/6model/serialization.c#L2746
22:25 jnthn dogbert2: Was just patched; see #moarvm :)
22:25 * lizmat is about to bump nqp/rakudo
22:25 dogbert17 .oO(I'm way too slow)
22:26 Geth ¦ nqp: 8b21489dee | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION
22:26 Geth ¦ nqp: Bump Moar to get GC fix, jnthn++
22:26 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/8b21489dee
22:26 Geth ¦ nqp: version bump brought these changes: https://github.com/MoarVM/MoarVM/compare/2017.10...2017.10-3-g9ad1f5f
22:26 dogbert17 this explains why the line number in the src didn't quite match with gdb :)
22:37 Geth ¦ rakudo: 322dcc9795 | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION
22:37 Geth ¦ rakudo: Bump NQP to get GC fix in Moar
22:37 Geth ¦ rakudo:
22:37 Geth ¦ rakudo: - related to cas() issues under stress, but no definite fix yet  :-(
22:37 Geth ¦ rakudo: - also seems to stability of GH #1202 code
22:37 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/commit/322dcc9795
22:37 synopsebot RAKUDO#1202 [open]: https://github.com/rakudo/rakudo/issues/1202 [severe] Async qqx sometimes hangs or dies ( await (^5).map({start { say qqx{… …} } }) )
22:45 * lizmat calls it a day
22:45 dogbert17 good night lizmat

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