Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-05-04

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:47 ilbot3 joined #p6dev
01:47 Topic for #p6dev is now Perl 6 language and compiler development
05:58 TimToady joined #p6dev
05:59 RabidGravy joined #p6dev
06:17 sno joined #p6dev
06:31 lizmat joined #p6dev
08:16 [TuxCM] joined #p6dev
08:16 lizmat joined #p6dev
08:41 dalek rakudo/nom: 63fd14f | lizmat++ | src/core/Num.pm:
08:41 dalek rakudo/nom: Streamline some Num infixes
08:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/63fd14f819
08:51 lizmat ok, I think we need to revisit NaN.Int and NaN.Rat
08:51 lizmat as well as Inf.Int and Inf.Rat
08:51 lizmat they both now fail
08:51 lizmat m: NaN.Int
08:51 camelia rakudo-moar 63fd14: OUTPUT«Cannot coerce NaN to an Int␤  in block <unit> at /tmp/14Mto5fMdk line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/14Mto5fMdk line 1␤␤»
08:51 lizmat m: NaN.Rat
08:51 camelia rakudo-moar 63fd14: OUTPUT«Cannot coerce NaN to a Rat␤  in block <unit> at /tmp/QepqhxrXo3 line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/QepqhxrXo3 line 1␤␤»
08:52 lizmat m: Inf.Int
08:52 camelia rakudo-moar 63fd14: OUTPUT«Cannot coerce Inf to an Int␤  in block <unit> at /tmp/nc9oDyzOT2 line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/nc9oDyzOT2 line 1␤␤»
08:52 lizmat m: Inf.Rat
08:52 camelia rakudo-moar 63fd14: OUTPUT«Cannot coerce Inf to a Rat␤  in block <unit> at /tmp/309s0PH0QL line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/309s0PH0QL line 1␤␤»
08:52 lizmat however, spectests indicate the opposite view
08:53 lizmat S32-num/rat.t, test 749-751 (which now fail)
08:53 lizmat and S02-types/infinity.t that has 3 todo'd tests
08:53 lizmat either we should match rakudo with the tests, or vice-versa
08:54 lizmat fwiw, *I* prefer the current behaviour, meaning tests should be adapted
08:55 lizmat if in the future, we manage to hack Inf into Int and Rat, we can lift the fail
08:57 dalek rakudo/nom: 689d079 | lizmat++ | src/core/Rat.pm:
08:57 dalek rakudo/nom: Streamline some Rats
08:57 dalek rakudo/nom:
08:57 dalek rakudo/nom: - Rat.perl if denominator is 1
08:57 dalek rakudo/nom: - return Failure instead of failing for FatRat.Rat
08:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/689d079559
09:05 dalek roast: 61e65a4 | lizmat++ | S32-num/rat.t:
09:05 dalek roast: Todo NaN/Inf/-Inf.Rat tests
09:05 dalek roast:
09:05 dalek roast: Since we've todo'd the NaN/Inf/-Inf.Int as well
09:05 dalek roast: review: https://github.com/perl6/roast/commit/61e65a4937
09:13 dalek rakudo/nom: 45be4ef | lizmat++ | src/core/Any-iterable-methods.pm:
09:13 dalek rakudo/nom: Change some fails into Failure.new
09:13 dalek rakudo/nom:
09:13 dalek rakudo/nom: Because if it's the value we're about to return anyway, we don't need
09:13 dalek rakudo/nom: the fail exception to deliver it
09:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/45be4ef0d5
09:20 Tux__ Cannot invoke this object (REPR: Null)
09:20 Tux__ t/78_fragment.t ... Dubious, test returned 1 (wstat 256, 0x100)
09:20 Tux__ No subtests run
09:20 Tux__ broken between yesterday and now
09:20 Tux__ p6 t/78_fragment.t
09:20 Tux__ PASS
09:21 [TuxCM] joined #p6dev
09:21 Tux__ consistent fail when invoked as «prove -j4 -e 'perl6 -I. -Ilib' t»
09:22 lizmat interesting...
09:22 lizmat does this include any of my patches of this morning ?
09:22 lizmat aka, what is "now"  ?
09:23 Tux__ This is Rakudo version 2016.04-89-gec6c3b8 built on MoarVM version 2016.04
09:24 Tux__ perl6 was built on 10:37
09:25 Tux__ if a standalone run passes, but prove fails, where shall the cause be found?
09:25 lizmat if you include PERL6LIB=lib in standalone run ?
09:30 Tux__ env PERL6LIB=lib make test => PASS / make test => FAIL
09:30 Tux__ This is Rakudo version 2016.04-89-gec6c3b8 built on MoarVM version 2016.04
09:30 Tux__ test            21.623
09:30 Tux__ test-t          13.254
09:30 Tux__ csv-parser      37.589
09:31 Tux__ p6 t/78_fragment.t => PASS, env PERL6LIB=lib p6 t/78_fragment.t => PASS
09:32 Tux__ prove -j4 -e 'perl6 -I. -Ilib' t/78_fragment.t => PASS, prove -j4 -e 'perl6 -I. -Ilib' t => FAIL
09:33 Tux__ so, parrallel testing conflict?
09:36 lizmat that would be weird ?
09:39 lizmat will look at it in a mo
09:41 dalek rakudo/nom: a56d039 | lizmat++ | src/core/Any.pm:
09:41 dalek rakudo/nom: Streamline some Any fallbacks
09:41 dalek rakudo/nom:
09:41 dalek rakudo/nom: - don't fail if we can directly return a Failure
09:41 dalek rakudo/nom: - use ternaries where possible
09:41 dalek rakudo/nom: - use postfix loops where possible
09:41 dalek rakudo/nom: - make smarter use of loop indexes where possible
09:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a56d0395aa
10:03 dalek rakudo/nom: 6a82e2a | lizmat++ | src/core/Array.pm:
10:03 dalek rakudo/nom: Streamline some Array ops
10:03 dalek rakudo/nom:
10:03 dalek rakudo/nom: - return Failure if we can, instead of fail
10:03 dalek rakudo/nom: - use ternaries where possible
10:03 dalek rakudo/nom: - don't bother creating local aliases for private attribute
10:03 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6a82e2a010
10:14 RabidGravy boom
10:46 brrt joined #p6dev
10:47 dalek rakudo/nom: 1939405 | lizmat++ | src/core/Buf.pm:
10:47 dalek rakudo/nom: Streamline Blob/Buf
10:47 dalek rakudo/nom:
10:47 dalek rakudo/nom: - don't fail when we can return a Failure
10:47 dalek rakudo/nom: - use ternaries where possible
10:47 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/193940524d
11:09 dalek rakudo/nom: 4e4cac0 | lizmat++ | src/core/Capture.pm:
11:09 dalek rakudo/nom: Streamline Capture
11:09 dalek rakudo/nom:
11:09 dalek rakudo/nom: - return Failure instead of failing
11:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4e4cac000d
11:37 dalek rakudo/nom: 480709d | lizmat++ | src/core/Complex.pm:
11:37 dalek rakudo/nom: Streamline Complex
11:37 dalek rakudo/nom:
11:37 dalek rakudo/nom: - use ternary when possible
11:37 dalek rakudo/nom: - return Failure rather than failing
11:37 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/480709d65e
11:43 brrt joined #p6dev
13:08 brrt joined #p6dev
13:34 dalek rakudo/nom: 1ee27e6 | jnthn++ | src/core/Promise.pm:
13:34 dalek rakudo/nom: Harden Promise.result against spurious wakeups.
13:34 dalek rakudo/nom:
13:34 dalek rakudo/nom: This prevents it from bogusly returning that a Promise was kept in
13:34 dalek rakudo/nom: cases where it was not, in fact, kept, and the OS just signalled the
13:34 dalek rakudo/nom: condvar spuriously.
13:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1ee27e660a
13:34 dalek rakudo/nom: 475063a | jnthn++ | src/core/Mu.pm:
13:34 dalek rakudo/nom: Harden Mu.Str against moving GC.
13:34 dalek rakudo/nom:
13:34 dalek rakudo/nom: We have various cases of this in tests:
13:34 dalek rakudo/nom:
13:36 jnthn lizmat: 1ee27e6 hopefully nails that Promise issue you mentioned being kinda common on OSX
13:36 [Coke] 6.c-errata now failing tests: t/spec/S32-num/rat.rakudo.moar
13:37 [Coke] (and t/spec/S17-supply/syntax.t just hung there again on os x)
13:37 [Coke] also 2 passing todo'd tests.
13:39 dalek rakudo/moar/reframe: 19e7a1b | jnthn++ | src/vm/moar/ops/perl6_ops.c:
13:39 dalek rakudo/moar/reframe: Sync with MoarVM API changes.
13:39 dalek rakudo/moar/reframe: review: https://github.com/rakudo/rakudo/commit/19e7a1bf1a
13:39 dalek rakudo/moar/reframe: df1db5e | jnthn++ | src/vm/moar/ops/perl6_ops.c:
13:39 dalek rakudo/moar/reframe: Add an MVMROOT on ctx, now frames are GCable.
13:39 dalek rakudo/moar/reframe: review: https://github.com/rakudo/rakudo/commit/df1db5ea74
13:42 jnthn (just rebased that branch)
13:45 brrt you rebased reframe... i'll rebase reframe-jit too, then
13:46 brrt shall i merge reframe-jit on top of reframe?
13:46 jnthn brrt: no, only the Rakudo moar/reframe branch
13:46 brrt oh, ok
13:46 brrt nm :-)
13:46 jnthn Just to ease testing, 'cus otherwise I see failing spectests 'cus I'm missing Rakudo commits
13:54 [Coke] lizmat: I assume the failing 6.c tests are the same as http://irclog.perlgeek.de/p6dev/2016-05-04#i_12431564 - I'm opening a ticket, making it a blocker for the next release.
14:01 [Coke] still no volunteer for the may release for rakudo/nqp
14:25 perlpilot_ joined #p6dev
14:27 perlpilot joined #p6dev
14:43 dalek joined #p6dev
14:44 perlpilot_ joined #p6dev
14:50 brrt joined #p6dev
14:52 skids joined #p6dev
14:57 Tux__ This is Rakudo version 2016.04-99-g475063a built on MoarVM version 2016.04
14:57 Tux__ test            21.708
14:57 Tux__ test-t          13.397
14:57 Tux__ csv-parser      34.835
14:57 Tux__ lizmat, na re-make
14:57 Tux__ dus geen FAIL meer
14:57 Tux__ sorry, that was Dutch
15:06 MadcapJake woah that seems to be quite the improvement!
15:07 jnthn I thought test-t used to be 12.something? Or did one of the other numbers I watch less get better? :)
15:13 MadcapJake jnthn: looks like it was even close to 11 at one point http://irclog.perlgeek.de/perl6/search/?nick=&amp;q=test-t
15:15 Tux__ http://tux.nl/Talks/CSV6/speed4.html includes the full history: http://tux.nl/Talks/CSV6/speed.log
15:18 dalek nqp: 5676e10 | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
15:18 dalek nqp: [js] Support declaring a variable as a static lexical and then using it as a typevar.
15:18 dalek nqp: review: https://github.com/perl6/nqp/commit/5676e109d0
15:18 dalek nqp: f280dff | (Pawel Murias)++ | src/vm/js/Operations.nqp:
15:18 dalek nqp: [js] Expose the BOOL type when declaring ops from compiled code.
15:18 dalek nqp: review: https://github.com/perl6/nqp/commit/f280dff233
15:18 dalek nqp: 25600fd | (Pawel Murias)++ | src/vm/js/ (7 files):
15:18 dalek nqp: [js] Keep privates attributes from ancestor classes separate.
15:18 dalek nqp: review: https://github.com/perl6/nqp/commit/25600fd03b
15:18 dalek nqp: 510670b | (Pawel Murias)++ | src/vm/js/RegexCompiler.nqp:
15:18 dalek nqp: [js] Access the attributes of the cursor in regexes properlyy
15:18 dalek nqp: review: https://github.com/perl6/nqp/commit/510670b1b4
15:21 dalek nqp: 0e80681 | (Pawel Murias)++ | src/vm/js/RegexCompiler.nqp:
15:21 dalek nqp: [js] Remove debugging leftover.
15:21 dalek nqp: review: https://github.com/perl6/nqp/commit/0e8068178b
15:21 dalek nqp: 3011392 | (Pawel Murias)++ | src/vm/js/nqp-runtime/runtime.js:
15:21 dalek nqp: [js] Remove dead code.
15:21 dalek nqp: review: https://github.com/perl6/nqp/commit/30113920b1
15:22 MadcapJake Tux__: cool thanks for the link!
15:29 dalek nqp: 116df25 | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js:
15:29 dalek nqp: [js] Implement nqp::hintfor.
15:29 dalek nqp: review: https://github.com/perl6/nqp/commit/116df25f58
16:28 dalek nqp: a69e45c | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js:
16:28 dalek nqp: [js] Fix bug.
16:28 dalek nqp: review: https://github.com/perl6/nqp/commit/a69e45cfd5
16:28 dalek nqp: 10069d7 | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js:
16:28 dalek nqp: [js] Make nqp::hintfor return -1 when encountering something that's not a P6opaque.
16:28 dalek nqp: review: https://github.com/perl6/nqp/commit/10069d7277
16:28 dalek nqp: 43fb5d6 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js:
16:28 dalek nqp: [js] Fix bug.
16:28 dalek nqp: review: https://github.com/perl6/nqp/commit/43fb5d6885
17:01 MadcapJake .seen Skarsnik
17:54 hankache joined #p6dev
18:21 dalek joined #p6dev
18:34 perlpilot joined #p6dev
18:57 lizmat jnthn: re 475063a , shouldn't we harden .WHERE ?
18:58 jnthn lizmat: ???
18:58 jnthn No
18:58 jnthn The point of .WHERE is "where is the object in memory"
18:58 lizmat ok
18:58 jnthn There's nothing to harden
18:59 lizmat but where it is in memory, is basically volatile info
18:59 jnthn Correct :)
18:59 jnthn Which is why we've nqp::objectid (which .WHICH uses)
18:59 lizmat if an object has moved out of the nursery, can we be sure that it will stay at the same memory address ?
19:00 jnthn Well, the present MoarVM answer is yes, but the Perl 6 answer in general is no
19:00 lizmat ah, ok, gotcha...
19:00 jnthn All it'd take for it not to be true on Moar is us stating to compact gen2 also
19:01 jnthn And the JVM has a range of collectors
19:01 lizmat I wonder whether we should mix in a role in the .WHERE value
19:01 lizmat that would make it croak when used in a NativeCall related environment ?
19:01 lizmat because that would be obviously a wrong thing to do ?
19:01 jnthn It'd be a weird thing to do though
19:02 jnthn I mean, you'd be passing the address of a Perl 6 object, not something that'll make sense in C-land.
19:02 lizmat well, some people might think that
19:02 lizmat especially coming from p5 land
19:05 jnthn It's still a stretch IMO...you'd have gotten an Int back from WHERE, and so to be able to pass it would have had to purposefully translate the signature of the C function you planned to call in such a way that you wrote Int in the signature in place of something wanting a pointer.
19:06 jnthn sub foo(SomeCStruct $foo) is native(...) {*}; will die if called as foo($something.WHERE) already
19:06 jnthn bbi10
19:11 lizmat jnthn: fwiw, 1ee27e660a8dce3ae03177 makes spectest run with HARNESS_TYPE=6
19:11 lizmat running one now with TEST_JOBS=1
19:20 lizmat hmmm... had a test hanging, now ran it with TEST_JOBS=8, and got a segfault
19:20 lizmat I guess I'm going to try this again when the Moar changes have landed  :-)
19:26 jnthn Still, progress...
19:27 jnthn I've still got various smaller ways to trigger problems that I need to hunt down.
19:28 jnthn (Beyond the ones I already fixed in the reframe branch)
19:28 lizmat yes, definitely progress
19:28 jnthn So I'll chug through those before trying to find 'em from the 6harness :)
19:28 lizmat also, the hang could have been caused by me recompiling rakudo underneath  :-)
19:28 jnthn ah
19:28 jnthn Maybe
19:28 lizmat I'll start another run before going to bed
19:29 lizmat it's slow with TEST_JOBS=1  :-)
19:29 jnthn lol
19:29 jnthn No
19:29 jnthn It's slow with an 11.5KB nursery :P
19:30 jnthn That run came out really well compared to the one I did a couple of weeks ago, though.
19:51 lizmat m: sub a(--> Nil) { Failure.new("foo") }; a.defined   # this feels peculiar
19:51 camelia rakudo-moar 475063: OUTPUT«foo␤  in block <unit> at /tmp/CiklublGPh line 1␤␤Actually thrown at:␤  in sub a at /tmp/CiklublGPh line 1␤  in block <unit> at /tmp/CiklublGPh line 1␤␤»
19:51 lizmat m: sub a() { Failure.new("foo") }; a.defined   # silent without the --> Nil
19:51 camelia rakudo-moar 475063: ( no output )
19:54 geekosaur guessing... it's smart enough to not bother trying to sink something that is known at compile time not to produce a result?
19:54 geekosaur (thus the a.defined never "happens")
19:56 jnthn I think the --> Nil makes it sink the body and return Nil
19:56 jnthn So the Failure just gets sunk inside the sub
19:56 jnthn And so what geekosaur said - you never hit defined
19:56 lizmat guess so  :-)
19:57 jnthn sub a(--> Nil) { ... } I think compiles into sub a() { ...; Nil } roughly
19:57 timotimo hm, is --> Nil for subs/methods that aren't supposed to return anything a good performance optimization already?
19:58 jnthn Not sure it makes a huge difference. With sub calls the static optimizer could spot the sink call ain't needed and throw it out I guess
19:59 jnthn Spesh is making a kinda lame job on the .sink calls at the moment.
20:02 timotimo yeah, i remember something about that
20:03 sno joined #p6dev
20:03 jnthn Spesh is also on my list of "things in MoarVM due some good attention soon" :)
20:34 nine_ How could this give a "Too many positionals passed; expected 1 argument but got 2"? $precomp-file.print($*REPO.id ~ "\n" ~ $dependencies ~ "\n");
20:37 lizmat are you looking at the right place ??  (--ll-exception maybe?)
20:38 nine_ Oh, I did not pass a mode to open(), so $precomp-file may be a Failure and it's Mu's print I'm calling
20:38 lizmat there you go  :)
20:38 lizmat those pesky Failures!  :-)
20:38 nine_ In this case, getting a Failure really does not help more than Perl 5's silence on open failures :/
20:47 lizmat well, in newio I once tried to throw the failure immediately
20:47 lizmat and it caused quite some spectest breakage  :-(
20:47 lizmat (at least in my memory)
20:49 jnthn It's more that .print is a method in Mu, so the Failure fallback doesn't apply
20:50 jnthn Method fallback, that is
20:50 nine_ And .print is at the same time something you'd quite often want to do on a file handle
20:53 jnthn Yeah. I agree it's LTA. Too tired to know the right place to fix it. :)
20:54 nine_ Well on the up side, my failure case was "file does not exist and stupid programmer forgot to specify write mode on open()", i.e. it's a fail during development, not a case you'd encounter in production
21:05 [Coke] http://xkcd.com/1676/ - mmm, new unicode to look forward to (hover text)
21:12 nine_ It's a snake!
21:12 dalek rakudo/nom: c403742 | lizmat++ | src/core/ (16 files):
21:12 dalek rakudo/nom: A lot more streamlining
21:12 dalek rakudo/nom:
21:12 dalek rakudo/nom: - use ternaries where possible
21:12 dalek rakudo/nom: - return Failure rather than failing
21:12 dalek rakudo/nom: - boolify reverse logic ternaries
21:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c40374237b
21:13 nine_ Who's idea was it to de-huffmanize ternaries because they are rarely used?
21:13 lizmat :-)
21:14 lizmat fwiw, I like the congruity with && ||
21:15 timotimo "boolify reverse logic ternaries"?
21:16 nine_ Yep, I actually like their look more in Perl 6. I also seem to use them more in Perl 6 than in other languages...
21:16 timotimo i also prefer the way they look in p6, tbh
21:20 nine_ Wow...I'm scared. I actually have a working combined mbc + dependency info precomp file implementation
21:22 lizmat timotimo:
21:22 lizmat complication expression ?? False !! True
21:23 lizmat *complicated
21:29 timotimo oh
21:36 jnthn They're flow control, so I think it's kinda nice they stand out :)
21:37 jnthn nine_: ooh, nice :)
21:38 lizmat nine_++
21:40 timotimo whooooaaa
21:40 timotimo good work, nine :)
21:40 * jnthn hopes he sleeps well enough to night to have the concentration to get his frame refactors mostly finished up tomorrow :)
21:41 jnthn *tonight
21:41 timotimo \o/
21:41 [Coke] RT: 1286; GLR: 6; JVM: 60; LHF: 2; LTA: 68; OSX: 3; PATCH: 3; PERF: 16; POD: 3; PRECOMP: 3; SEGV: 22; STAR: 1; TESTNEEDED: 17; UNI: 5; WEIRD: 2
21:41 jnthn This part is less bad in so far as if I screw it up I can have Moar reliably explode (as in, no stress test required) :)
21:42 timotimo \o/
21:43 jnthn Also I'll do the minimum "make it work" to get to the merge point, but then there'll be further optimizations on top of it afterwards.
21:50 lizmat jnthn ++
22:03 lizmat good night, #perl6!
22:03 timotimo gnite lizmat
22:03 lizmat eh, #p6dev  :-)
22:03 RabidGravy harr
22:10 jnthn 'night, lizmat
22:30 * jnthn sleeps also :) 'night

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary