Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-06-01

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

All times shown according to UTC.

Time Nick Message
01:49 ilbot3 joined #perl6-dev
01:49 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:10 Zoffix joined #perl6-dev
02:11 Zoffix Any idea what $time_before and $time_after in Test.pm6 are all about? Specifically, why the hell are they backwards? https://github.com/rakudo/rakudo/blob/nom/lib/Test.pm6#L93
02:16 timotimo they are supposed to measure what's between "ok" calls and such
02:16 timotimo you can set PERL6_TEST_TIMES
02:17 Zoffix Seems broken. I get negative and NaN times
02:17 Zoffix Why are they used in a backwards manner? $time_after is assigned at the start of the test and $time_before at the end? Any idea?
02:18 Zoffix (negative and NaN tests output: https://gist.github.com/zoffixznet/89a9f0713a5199186e9af4216d9b5104 )
02:18 timotimo it probably hasn't been tried for a few months :P
02:18 timotimo at least the way it interacts with subtests
02:25 Zoffix jnthn, which behaviour preferred? That it uses relative tolerance by default? http://irclog.perlgeek.de/perl6/2015-12-15#i_11719919
02:25 Zoffix Now this Sam person is commenting on my is-approx tickets saying the new relative tolerance should stay and the spec and docs that say it should be absolute are wrong.
02:26 Zoffix And then I see people in the logs wanting is-approx to use ≅ altogether, which has tolerance ten orders of magnitude different.
02:27 Zoffix Too many damn opinions
03:18 MadcapJake joined #perl6-dev
03:21 jrusso joined #perl6-dev
07:52 sno joined #perl6-dev
08:48 Ven joined #perl6-dev
09:11 RabidGravy joined #perl6-dev
09:21 jnthn morning, #perl6-dev
09:22 jnthn lizmat: No, a slurpy array is very decidedly an *array*. :) Its mutability is a feature. If you want a List instead (and so the original containers of anything passed) then use `*@a is raw`.
09:28 jnthn lizmat: Just looked at List and its various from-slurpy methods (inherited by Array and used in that case too). We could tweak the various from-slurpy methods to fill out the reified part of a list up until they hit something iterable.
09:29 lizmat ok, that sounds like a plan  :-)
09:33 jnthn Zoffix: On the tolerance thing, think you'll have to try and get an answer from TimToady on that one. :)
10:10 |Tux| This is Rakudo version 2016.05-32-g33ab868 built on MoarVM version 2016.05
10:10 |Tux| test            19.667
10:10 |Tux| test-t          12.510
10:10 |Tux| csv-parser      33.775
10:20 Zoffix .ask TimToady would you have time to offer a ruling on what the default tolerance to is-approx in Test.pm6 should be? Is it relative or absolute, and what value? My ideal choice would be absolute with $*TOLERANCE to match ≅. The specs/docs use absolute at 1e-5. And current impl uses relative at 1e-6. My more detailed plan for rewrite of is-approx: https://github.com/zoffixznet/debug/blob/master/mu/approx-rework.md
10:21 Zoffix no robot? :/
10:31 Zoffix oh, ≅ doesn't use absolute
10:46 stmuk maybe if it's approx it should use a random tolerance? :)
10:48 jnthn bah, no wonder spectest in my VM is slow...I only gave it a core or two...
10:48 Zoffix stmuk, Congrats! You did it! I didn't think it was possible to add any more posibilities to bikeshed from, but you've done it :P
10:49 Zoffix jnthn, the other day I spent 20 minutes debugging async code, wondering why it wasn't giving any speed up over non-async, until I reliazed my VM was set to use a single core :P
10:50 jnthn heh, that's ones of the easier reasons for it not to, yes ;)
10:51 jnthn This is sufficiently slow I think it might actually have been faster to shut down the VM, tweak the core count, then start it up, then spectest :P
11:03 brrt joined #perl6-dev
11:05 nine jnthn: can't you up the core count on line?
11:05 jnthn nine: Apparently not.
11:05 jnthn I did try :)
11:11 dalek nqp: 89345b4 | jnthn++ | tools/build/MOAR_REVISION:
11:11 dalek nqp: Bump MOAR_REVISION.
11:11 dalek nqp:
11:11 dalek nqp: For performance improvements, spesh fixes.
11:11 dalek nqp: review: https://github.com/perl6/nqp/commit/89345b4fc0
11:12 dalek rakudo/nom: 3cb602d | jnthn++ | tools/build/NQP_REVISION:
11:12 dalek rakudo/nom: Bump NQP_REVISION for an improved MoarVM.
11:12 dalek rakudo/nom:
11:12 dalek rakudo/nom: Various performance improvements, and a couple of spesh fixes.
11:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3cb602d2ce
11:16 dalek rakudo/nom: 7250543 | jnthn++ | src/ (2 files):
11:16 dalek rakudo/nom: Eliminate &EXHAUST and the use of it.
11:16 dalek rakudo/nom:
11:16 dalek rakudo/nom: We used to use it to replace the RETURN lexical, used for implementing
11:16 dalek rakudo/nom: (lexotic) return. At one point, it would also give an improved error
11:16 dalek rakudo/nom: for the case of returning from an already returned routine. However,
11:16 dalek rakudo/nom: at this point it did not do so, and there are better ways to make that
11:16 dalek rakudo/nom: happen. It did, however, carry a high cost, and frustrated inlining.
11:16 dalek rakudo/nom: Its removal made one simple loop/methodcall/increment benchmark run in
11:16 dalek rakudo/nom: 63% of the CPU cycles it previously did, which is a nice win.
11:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/725054360e
11:28 RabidGravy looks good
11:52 jnthn That MoarVM bump includes a change that should give rather faster Rakudo builds too
12:15 travis-ci joined #perl6-dev
12:15 travis-ci Rakudo build failed. Jonathan Worthington 'Bump NQP_REVISION for an improved MoarVM.
12:15 travis-ci https://travis-ci.org/rakudo/rakudo/builds/134417129 https://github.com/rakudo/rakudo/compare/33ab86837a2e...3cb602d2ce51
12:15 travis-ci left #perl6-dev
12:33 perlpilot heh
12:33 perlpilot "faster builds" ... "build failed"   That *is* fast  :)
12:37 jnthn That's the already-busted "make install" on JVM rather than a regression
12:37 jnthn Or at least, the mail I got said "still failing"
13:00 dalek rakudo/nom: ef376d1 | peschwa++ | .travis.yml:
13:00 dalek rakudo/nom: Ignore JVM on all platforms again.
13:00 dalek rakudo/nom:
13:00 dalek rakudo/nom: ...because it's apparently too hard to fix and thus just noisy.
13:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ef376d197a
13:00 psch ...i give up :P
13:00 psch well, at least with maintaining my position re "that should be reported", for now
13:09 dalek roast: 5dcca8c | (Tom Browder)++ | S26-documentation/07-tables.t:
13:09 dalek roast: comment out the test because it causes an exception even with the 'todo' function
13:09 dalek roast: review: https://github.com/perl6/roast/commit/5dcca8c8ba
13:09 dalek roast: c2e994d | (Tom Browder)++ | S26-documentation/07-tables.t:
13:09 dalek roast: Merge pull request #122 from tbrowder/mod-roast-table-test
13:09 dalek roast:
13:09 dalek roast: comment out the test because it causes an exception even with the 'to…
13:09 dalek roast: review: https://github.com/perl6/roast/commit/c2e994d928
13:09 psch shouldn't that be a 'skip' instead of commented?
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation: ab446d6 | niner++ | src/core/CompUnit/Precompilation (3 files):
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation: Fix precomp dependency checks on file systems with coarse timestamps.
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation:
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation: Replace fragile timestamp check by checksums for deciding whether a
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation: precompiled dependency is still the same.
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation:
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation: Many thanks to pmurias++ for suggesting using a hash!
13:09 dalek rakudo/rt128156_fix_precomp_deps_validation: review: https://github.com/rakudo/rakudo/commit/ab446d644f
13:10 travis-ci joined #perl6-dev
13:10 travis-ci Rakudo build failed. Jonathan Worthington 'Eliminate &EXHAUST and the use of it.
13:10 travis-ci https://travis-ci.org/rakudo/rakudo/builds/134417965 https://github.com/rakudo/rakudo/compare/3cb602d2ce51...725054360efa
13:10 travis-ci left #perl6-dev
13:11 brrt joined #perl6-dev
13:21 skids joined #perl6-dev
14:03 travis-ci joined #perl6-dev
14:03 travis-ci Rakudo build failed. Pepe Schwarz 'Ignore JVM on all platforms again.
14:03 travis-ci https://travis-ci.org/rakudo/rakudo/builds/134440810 https://github.com/rakudo/rakudo/compare/725054360efa...ef376d197ab3
14:03 travis-ci left #perl6-dev
14:49 [Coke] is t/fudgeandrun failing for other folks?
14:50 [Coke] I used to be able to use that to run & fudge multiple t/spec tests, now it's complaining about missing Test
14:54 psch oh, of course i mess up the travis.yml /o\
14:54 dalek nqp: a9ec466 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
14:54 dalek nqp: Improve code-gen by avoiding redundant deconts.
14:54 dalek nqp:
14:54 dalek nqp: Sometimes, we can cheaply figure out we don't need to insert them into
14:54 dalek nqp: the code at all. Do so. Shaves 3.6KB off NQP build size, 16.2KB off
14:54 dalek nqp: Rakudo compiler build size, and 55.8KB off CORE.setting bytecode size.
14:54 dalek nqp: A loop/method call/increment benchmark runs 0.3% less CPU instructions
14:54 dalek nqp: thanks to this change also.
14:54 dalek nqp: review: https://github.com/perl6/nqp/commit/a9ec466295
14:58 japhb jnthn: Pretty please add said benchmark to perl6-bench.  :-)
14:58 dalek rakudo/nom: 4a2929c | peschwa++ | .travis.yml:
14:58 dalek rakudo/nom: Fix allow_failures, hopefully.
14:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4a2929cf86
14:58 psch kind of weird that the previous attempt doesn't work, but then i don't really know YAML either vOv
15:27 RabidGravy anyway, all my modules are good with the "Rakudo version 2016.05-35-gef376d1 built on MoarVM version 2016.05-17-g6075599"
16:17 travis-ci joined #perl6-dev
16:17 travis-ci Rakudo build passed. Pepe Schwarz 'Fix allow_failures, hopefully.'
16:17 travis-ci https://travis-ci.org/rakudo/rakudo/builds/134472643 https://github.com/rakudo/rakudo/compare/ef376d197ab3...4a2929cf864a
16:17 travis-ci left #perl6-dev
16:22 stmuk_ joined #perl6-dev
18:10 edehont joined #perl6-dev
18:29 nine psch: have you made any progress at all on the EVAL issue?
18:30 psch nine: no, none at all.  hence the change to .travis.yml
18:31 nine Do you at least have an idea which direction may be worth looking into?
18:32 psch my last idea was trying to look into the generated .class file and see what's up with the setcodeobj calls, but that didn't really get going, because i didn't really find out *which* class file i'd have to examine...
18:32 psch aside from that, i think we agreed that writing the coderef probably works, but somewhere between deserialization and loading it breaks?
18:39 nine Yes, when I prevent it from serializing the EVAL's code objects I get an NPE in SerializationReader::deserialize because it expects a larger number of code refs than stored.
18:40 psch iirc not calling deserialize_code if the current CU is_nested did compile, but broke later in rakudo during make
18:41 psch in case that's any kind of hint
18:41 psch i really didn't get far into understanding all of this :/
18:41 nine # Add code object fixups.
18:41 nine if !$is_nested && $cu.code_ref_blocks() {
18:42 psch i mean in vm/jvm/QAST/Compiler.nqp:3370 or thereabout
18:42 psch i'm not sure i don't have any changes left locally that might change the line number :)
18:42 nine # If we need to do deserialization, emit code for that.
18:42 nine if $*COMP_MODE && !$is_nested {
18:42 nine is what I currently have there
18:43 psch right, that's what i was working with too
18:44 nine Well to me the $is_nested check I posted first would make sense. It's just that we use the $cu.code_ref_blocks() array as is for determining how many code blocks we have to deserialize even though with this check we store less of them.
18:44 nine So I now give simply adding a null check a try and see how far I come.
18:44 nine Well.... Unhandled exception: java.lang.RuntimeException: Missing or wrong version of dependency 'src/Perl6/Pod.nqp'
18:45 psch yeah, that one's horribly annoying as well :/
18:45 psch i usually git clean -xdf in rakudo, make install in nqp, and then Configure.pl --backends=jvm --make-install
18:45 nine Because a 3 minute compile cycle is not horrible enough
18:46 psch heh
18:46 nine rm blib/Perl6/* install/share/nqp/lib/Perl6/* seems to do the trick
18:46 psch on hack moar with a clean prefix is over 3 minutes :P
18:55 vendethiel joined #perl6-dev
18:59 sno joined #perl6-dev
19:08 nine This is...difficult. On the one hand the compiler seems to need code_ref_blocks to contain the EVAL's code refs, too. On the other hand, it may not serialize those code refs.
19:12 lizmat_ joined #perl6-dev
19:19 nine I wonder why the JVM needs this setcodeobj call and Moar doesn't
19:20 geekosaur you can't add features to the jvm the way you can to moar
19:20 geekosaur you have to come up with ways to work with what it has
19:53 nine I don't get that when I add the !$is_nested condition, the code objects seem to be missing from the serialization file. The condition only prevents the code from running during the EVAL's compilation, but it should still be done during the outer comp unit's.
20:07 nine But it clearly isn't. Otherwise those code objects shoud appear twice in the debug output
20:24 nine Oh...we simply don't make it that far!
20:25 nine The setcodeobj error occurs during compilation of the EVAL
20:27 nine So I'm back to thinking that the !$is_nested check is actually correct
20:30 edehont joined #perl6-dev
21:52 dalek rakudo/nom: 99dfd47 | lizmat++ | src/core/List.pm:
21:52 dalek rakudo/nom: Streamline List.reifiers a bit (gives a few %)
21:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/99dfd47b07
21:52 dalek rakudo/nom: 069b789 | lizmat++ | src/core/Array.pm:
21:52 dalek rakudo/nom: Streamline Array.iterator, fix handling of holes
21:52 dalek rakudo/nom:
21:52 dalek rakudo/nom: - gives about 10% improvement in iterating over Arrays
21:52 dalek rakudo/nom: - separate iterator for reifying/non-reifying case
21:52 dalek rakudo/nom: - make sure a fully reified Array resets the todo list
21:52 dalek rakudo/nom: - don't check for elems, handle null as a sign for something special
21:52 dalek rakudo/nom: - create a vivifying container for holes in the Array
21:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/069b789af5
21:58 * jnthn is glad the GLR lists impl has ended up with a decent bus number :)
21:58 jnthn lizmat++ # optimizing
21:59 lizmat :-)
21:59 lizmat next step: sequential-map's sink-all implementation
22:01 lizmat jnthn: can we actually shift something non-concrete from a nqp::list ?
22:01 jnthn Certainly
22:01 jnthn m: say [Any, Any].shift
22:01 camelia rakudo-moar 4a2929: OUTPUT«(Any)␤»
22:01 jnthn For example :)
22:02 lizmat hmmm...
22:02 lizmat I guess I still don't fully grok the difference between .DEFINITE and nqp::isconcrete
22:08 lizmat good night, #perl6-dev!
22:14 timotimo i think the only difference is that .DEFINITE maps to p6definite
22:14 jdv79 joined #perl6-dev
22:16 jnthn x.DEFINITE is just nqp::p6bool(nqp::isconcrete(x))
22:19 skids joined #perl6-dev
22:28 timotimo oh
22:37 jnthn sleep &
22:38 tomboy64 nine: may i inquire about the progress of your jvm work?

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