Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-05-27

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

All times shown according to UTC.

Time Nick Message
00:29 hoelzro joined #perl6-dev
01:48 ilbot3 joined #perl6-dev
01:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
03:55 skids joined #perl6-dev
04:34 dalek roast: 417f454 | usev6++ | S32-num/rat.t:
04:34 dalek roast: Skip test for RT #128264 on JVM
04:34 dalek roast: review: https://github.com/perl6/roast/commit/417f4543c9
06:09 sno joined #perl6-dev
07:29 [Tux] This is Rakudo version 2016.05-14-g1ab1fb6 built on MoarVM version 2016.05
07:29 [Tux] test            20.456
07:29 [Tux] test-t          13.220
07:29 [Tux] csv-parser      34.131
08:13 masak [Tux]: what's the general trend lately?
08:18 [Tux] stable
08:19 [Tux] http://tux.nl/Talks/CSV6/images/test-t-14.png
08:19 [Tux] lizmat & me discussed the noise window yesterday and we think it is like 1.25 sec
08:39 RabidGravy joined #perl6-dev
09:00 devtom30 joined #perl6-dev
09:08 dalek rakudo/nom: 5638a13 | moritz++ | lib/Test.pm6:
09:08 dalek rakudo/nom: Remove diag() call from subtest
09:08 dalek rakudo/nom:
09:08 dalek rakudo/nom: this is not what diag is for, and the overall response to this has
09:08 dalek rakudo/nom: not been positive.
09:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5638a13ab4
09:13 MadcapJake joined #perl6-dev
09:37 AlexDaniel joined #perl6-dev
09:53 dalek joined #perl6-dev
09:57 cognominal joined #perl6-dev
10:10 travis-ci joined #perl6-dev
10:10 travis-ci Rakudo build failed. Moritz Lenz 'Remove diag() call from subtest
10:10 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133326163 https://github.com/rakudo/rakudo/compare/1ab1fb6f18c3...5638a13ab46b
10:10 travis-ci left #perl6-dev
10:16 jnthn A slide deck on work towards cancellation of promises in the JS world: https://docs.google.com/presentation/d/1V4vmC54gJkwAss1nfEt9ywc-QOVOfleRxD5qtpMpc8U/edit#slide=id.gc6f9e470d_0_0
10:17 jnthn Borrowing a good amount from the .Net approach also
10:18 jnthn A problem we'll want to take on at some point also.
11:53 masak jnthn: I find it interesting that people (notably getify) are upset about promises getting cancelable.
12:10 jnthn masak: One reason I didn't do anything about it in Perl 6 promises so far is 'cus it's, well, a hard problem :)
12:11 jnthn And I figured we might be able to borrow things from the best solutions that show up
12:11 jnthn masak: Any good reading on what they don't like about the plans?
12:22 masak yes, as it happens. let me find the reference for you.
12:23 masak but the tl;dr is: it's basically a philosophical disagreement, as in "the Promise interface (as ideally envisioned) doesn't do that"
12:24 masak "Promises cannot be canceled -- and shouldn't be as that would destroy the external immutability trust discussed in the "Promise Uncancelable" section later in this chapter -- so they can only be silently ignored." -- https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&%20performance/ch3.md
12:25 dalek rakudo/nom: 13ad297 | lizmat++ | src/core/List.pm:
12:25 dalek rakudo/nom: A little List.iterator streamlining
12:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/13ad297460
12:33 masak "the problem is that it would let one consumer/observer of a Promise affect some other consumer's ability to observe that same Promise. This violates the future-value's trustability (external immutability)"
12:33 masak (ibid.)
12:34 jnthn aha
12:34 jnthn Yes, that's a good argument.
12:48 dalek rakudo/nom: e0e8f30 | lizmat++ | src/core/ (2 files):
12:48 dalek rakudo/nom: List.iterator -> Array, simplify List.iterator
12:48 dalek rakudo/nom:
12:48 dalek rakudo/nom: Part one of some refactoring creating a better and faster Array.iterator
12:48 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e0e8f3010d
12:55 DrForr joined #perl6-dev
12:58 Woodi "the problem is that it would let one consumer/observer of a Promise affect..." - there is some strange definition of promises there, IMO... I thinked promises are just functions "backgrounded" and private like normal variables. if somethink other can observe it then it is totally other system and only in this *other* system cancelling influence other observers...
13:10 masak Woodi: promises are objects. objects have references. references can be shared across the program. therefore, different consumers can observe the same promise.
13:10 masak that's not a strange definition. that's how it's set up to work.
13:17 Woodi masak: ok, so sharing makes computation processes waste cpu... canceled promise can be a NULL in some shared struct.
13:17 dalek nqp: 1b591b3 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
13:17 dalek nqp: Revert "Revert "Merge pull request #287 from MasterDuke17/master""
13:17 dalek nqp:
13:17 dalek nqp: This reverts commit 8e105721e877011ba317a5bed27db81949ebd4a5.
13:17 dalek nqp: review: https://github.com/perl6/nqp/commit/1b591b3adf
13:18 dalek rakudo/nom: 86e3e29 | (Daniel Green)++ | / (2 files):
13:18 dalek rakudo/nom: Fix RT #128073. Also some further cleanup of IO::Path.dir to remove some VM specific code.
13:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/86e3e2955b
13:18 dalek rakudo/nom: a80414e | peschwa++ | / (2 files):
13:18 dalek rakudo/nom: Merge pull request #772 from MasterDuke17/RT128073
13:18 dalek rakudo/nom:
13:18 dalek rakudo/nom: Fix RT #772
13:18 dalek rakudo/nom:
13:18 dalek rakudo/nom: Confirmed locally that the current R-J failure mode doesn't change with this and NQP PR #287.
13:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a80414edc1
13:28 travis-ci joined #perl6-dev
13:28 travis-ci Rakudo build failed. Elizabeth Mattijsen 'A little List.iterator streamlining'
13:28 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133366703 https://github.com/rakudo/rakudo/compare/5638a13ab46b...13ad297460b7
13:28 travis-ci left #perl6-dev
13:34 nwc10 joined #perl6-dev
13:34 nwc10 not sure if this is old news, or the wrong channel
13:34 nwc10 but commit 86e3e2955b733e77287a0c3d4807dc0f339a875b seems to set tools/build/NQP_REVISION to a revision that's in the future.
13:35 psch nwc10: ah, right
13:35 psch i saw that locally, but overlooked to fix it
13:36 dalek rakudo/nom: e5bd09e | peschwa++ | tools/build/NQP_REVISION:
13:36 dalek rakudo/nom: Fix NQP_REVISION
13:36 dalek rakudo/nom:
13:36 dalek rakudo/nom: Thanks nwc10++ for the reminder.
13:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e5bd09e3f9
13:37 nwc10 thanks for the fix - past the Configure.pl stage and into testing the build...
13:37 psch it still breaks during install-core-dist.pl
13:38 psch nine++ says that's because the "BEGIN EVAL during precomp" fix hasn't landed for r-j yet
13:38 psch unfortunately i don't know what to look at to find that fix, nor how to fix it without cargo-culting the moar solution
14:03 lizmat afk for a few hours&
14:04 nwc10 it worked. building jnthn's next MoarVM iteration...
14:04 nwc10 left #perl6-dev
14:14 brrt joined #perl6-dev
14:21 travis-ci joined #perl6-dev
14:21 travis-ci Rakudo build failed. Elizabeth Mattijsen 'List.iterator -> Array, simplify List.iterator
14:21 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133371745 https://github.com/rakudo/rakudo/compare/13ad297460b7...e0e8f3010d76
14:21 travis-ci left #perl6-dev
14:45 masak Woodi: "waste CPU" is also not the issue.
14:46 masak Woodi: let's say consumers A and B are each holding a reference to the same promise. what's the *guarantee* that an unresolved promise gives? right, that it succeeds or fails.
14:46 masak now, let A cancel the promise. that guarantee is now broken for B.
14:53 MadcapJake But not broken, according to that presentation, it's a third state: canceled
14:54 MadcapJake which is why the promise api mentioned also has to be reworked to include cancel callbacks
14:56 Woodi masak: cancelling by A can result in failure for B (and A too). but main problem for me is: hey thread buddy, allow me to share this function *call* with you! :)  promise result can be shared freely, but a "function call" ?
14:57 MadcapJake the "trustability" argument rings false to me because, at least according to the presentation, it would be entirely dependent on the producer handling a CancelToken, iiuc
15:06 travis-ci joined #perl6-dev
15:06 travis-ci Rakudo build failed. peschwa 'Merge pull request #772 from MasterDuke17/RT128073
15:06 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133378699 https://github.com/rakudo/rakudo/compare/e0e8f3010d76...a80414edc119
15:06 travis-ci left #perl6-dev
15:08 psch i *really* wish i knew how to fix that setcodeobj bug :(
15:10 masak I wonder how much already-written JS code that uses Promises will become wrong in the face of cancellation.
15:11 MadcapJake none, it's the last argument in all cases
15:48 travis-ci joined #perl6-dev
15:48 travis-ci Rakudo build failed. Pepe Schwarz 'Fix NQP_REVISION
15:48 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133383717 https://github.com/rakudo/rakudo/compare/a80414edc119...e5bd09e3f99c
15:48 travis-ci left #perl6-dev
17:03 nine psch: in short the fix is about breaking the assumption that there's a 1:1:1 relationship between compilation unit, serialization context and byte code compiler instance
17:04 psch ...i don't think that helps me understand :)
17:05 nine psch: usually the compiler has to compile one compilation unit, store the objects created during compilation into the current serialization context and have a byte code compiler serialize the result into a file.
17:06 nine psch: EVALs though are a compilation unit of their own. But they do not have their own file where the result could be stored.
17:06 nine psch: so instead we store those objects into the serialization context of the surrounding comp unit.
17:08 nine Sounds rather easy and straight forward conceptually, but it breaks the assumption I mentioned in several places in the whole compiler stack.
17:12 psch nine: i think i'll have to retrace this with a fresher brain than i have available right now, to even understand it
17:12 psch i doubt i'll come to a solution, still
17:13 psch fwiw, i'd still like the commit that fixed it on moar, if you still have its hash around
17:17 nine psch: https://github.com/perl6/nqp/commit/cbdf5bb71f1b3c815386e2ac949f9a4c9a73bd63 https://github.com/perl6/nqp/commit/125eb32eb155bdbcf08fce9ba6f2bf4af6cc0e84 https://github.com/rakudo/rakudo/commit/adb2c8f7b6e92a6ba01b6c8b665709934af3184c https://github.com/rakudo/rakudo/commit/6d21e8ba1c2a86fd0943660eb91e955be0ed72c4
17:19 psch nine: thanks.  i'll see if i get around to digging into that, coupled with your explanation, during the weekend
17:19 nine psch: I guess that the modifications to  src/vm/moar/QAST/QASTCompilerMAST.nqp the first NQP commit does are the key
17:20 nine psch: that would be awesome :) Will visit my parents over the weekend so will not have real coding time. And so far I've not exactly made good progress :/
17:20 nine I'm a complete newbie to the JVM backend after all and it's quite different to MoarVM in places
17:20 psch nine: well, i'd really like travis to finally shutup, without having to tell it not to report r-j build failures... :)
17:21 psch nine: and i really just have no idea right now what is even wrong in the first place
17:21 psch symtomatically it's just "we hand a null value to setcodeobj", but clearly there's a lot more going on
17:21 psch and even if i'm somewhat familiar with nqp-j, i'm really not particularly familiar with the architecture as such
17:22 nine Could be that we share too many bits between the EVAL's compilation unit and the outer compilation unit.
17:23 nine or too few
17:25 psch well, my naive interpretation of the error message would be that we lose the reference to the EVAL coderef while writing the surrounding CU
17:26 psch but yeah, i have no idea how good a guess that is, because i don't really know what's actually going on... :)
17:30 nine That's probably quite close to the truth. Only compilcated by the fact that for code objects rakudo installs a stub (in finish_code_object) that when called finishes compilation of this code object early so it can be called during compilation.
17:31 nine That's how BEGIN stuff works and what we need for the EVAL in question. Because it's run as part of module loading, which usually means a "use" or "need" statement which are BEGIN time by definition.
17:33 psch so the crux of the issue probably comes down to "finish_code_object doesn't handle one specific edge case correctly"?
17:34 psch well, i think i have enough to go on for tomorrow right now, thanks for the explanations :)
17:38 nine More or less, yes. Thanks for having a look :)
17:53 sno joined #perl6-dev
18:04 [Coke] RT: 1299; CONC: 7; GLR: 6; JVM: 68; LHF: 1; LTA: 74; NYI: 28; OSX: 6; PERF: 15; POD: 3; PRECOMP: 3; RFC: 19; SEGV: 19; STAR: 1; TESTNEEDED: 29; TODO: 9; UNI: 5; WEIRD: 3
19:37 mohij joined #perl6-dev
19:46 AlexDaniel joined #perl6-dev
20:18 patrickz joined #perl6-dev
21:33 dalek rakudo/nom: d2f6e6a | lizmat++ | src/core/Rakudo/Internals.pm:
21:33 dalek rakudo/nom: Add EmptyIterator class
21:33 dalek rakudo/nom:
21:33 dalek rakudo/nom: Needed for List/Array.iterator streamlining
21:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d2f6e6ab7e
21:33 dalek rakudo/nom: 1b13351 | lizmat++ | src/core/Hash.pm:
21:33 dalek rakudo/nom: Bring Hash.keyof up to date, dogbert17++
21:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1b13351eac
21:36 dalek rakudo/nom: 1135805 | lizmat++ | src/core/Hash.pm:
21:36 dalek rakudo/nom: Revert "Bring Hash.keyof up to date, dogbert17++"
21:36 dalek rakudo/nom:
21:36 dalek rakudo/nom: This reverts commit 1b13351eacf7ebc1a460151301180705c269b50a.
21:36 dalek rakudo/nom:
21:36 dalek rakudo/nom: Will look at this later
21:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1135805838
21:41 dalek rakudo/nom: be4e439 | jnthn++ | src/Perl6/Metamodel/CoercionHOW.nqp:
21:41 dalek rakudo/nom: Implement shortname method in CoercionHOW.
21:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/be4e439585
21:44 jnthn m: use Test; is Str(Any).gist, 'Str(Any)', 'Can gist a coercion type';
21:44 camelia rakudo-moar e5bd09: OUTPUT«Method 'shortname' not found for invocant of class 'Perl6::Metamodel::CoercionHOW'␤  in block <unit> at /tmp/ONwb9iR_vD line 1␤␤»
21:45 dalek roast: de11e00 | jnthn++ | S12-coercion/coercion-types.t:
21:45 dalek roast: Add test for coercion type .gist.
21:45 dalek roast: review: https://github.com/perl6/roast/commit/de11e00824
21:45 jnthn lizmat: That bit's fixed, at least :)
21:52 RabidGravy joined #perl6-dev
22:02 lizmat jnthn: if we're iterated over a list once, should be expect all elements to be reified ?
22:02 lizmat *we've
22:02 lizmat *we
22:02 lizmat *sigh*
22:02 lizmat I guess I have more jetlag than I thought
22:03 jnthn lizmat: Well, if we completed the iteration, yes
22:04 lizmat ok, I guess we're not resetting $!todo in the List.iterator
22:04 lizmat so any subsequent iteration will take the slow path
22:04 jnthn $!todo should be cleared after the list is fully reified.
22:04 lizmat ack
22:04 jnthn iirc anyway :)
22:09 jnthn sleep time &
22:09 timotimo rest well, jnthn :)
22:10 lizmat good night, jnthn
22:34 travis-ci joined #perl6-dev
22:34 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Bring Hash.keyof up to date, dogbert17++'
22:34 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133495837 https://github.com/rakudo/rakudo/compare/e5bd09e3f99c...1b13351eacf7
22:34 travis-ci left #perl6-dev
22:37 timotimo looks like it's just java interop and nativecall on the jvm backend b0rking
22:49 Ven joined #perl6-dev
22:55 Ven joined #perl6-dev
23:27 travis-ci joined #perl6-dev
23:27 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Revert "Bring Hash.keyof up to date, dogbert17++"
23:27 travis-ci https://travis-ci.org/rakudo/rakudo/builds/133496504 https://github.com/rakudo/rakudo/compare/1b13351eacf7...113580583895
23:27 travis-ci left #perl6-dev

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