Perl 6 - the future is here, just unevenly distributed

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

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

All times shown according to UTC.

Time Nick Message
01:26 Zoffix__ joined #perl6-dev
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
03:45 mst joined #perl6-dev
07:30 RabidGravy joined #perl6-dev
08:24 sortiz joined #perl6-dev
09:19 brrt joined #perl6-dev
09:41 Ven joined #perl6-dev
09:53 Ven_ joined #perl6-dev
09:59 nine I think I made some progress. With a shared JCLASS, I now arrive at "Wrong number of arguments passed; expected 2..-1, but got 0" when loading the precomp file
10:05 nine Am I missing something here or should this error not even be possible?
10:05 nine if (positionals < required || positionals > accepted && accepted != -1)
10:05 nine throw ExceptionHandling.dieInternal(cf.tc, "Wrong number of arguments passed; expected " + required + ".." + accepted + ", but got " + positionals);
10:06 nine Oh, it's the positionals < required part that fails the check
10:14 nine Occurs when trying to run the deserialization code ref
10:26 Ven joined #perl6-dev
10:40 Ven_ joined #perl6-dev
10:52 hoelzro_ joined #perl6-dev
10:53 |Tux| joined #perl6-dev
11:00 brrt joined #perl6-dev
11:24 nine Sometimes it's a StackOverflowError instead
11:27 dalek rakudo/nom: 85682a5 | lizmat++ | src/core/Mu.pm:
11:27 dalek rakudo/nom: Streamline Mu.Capture a bit
11:27 dalek rakudo/nom:
11:27 dalek rakudo/nom: - use nqp ops
11:27 dalek rakudo/nom: - make sure we don't keep an empty hash around
11:27 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/85682a52de
11:27 nine Current NQP diff looks like this: https://gist.github.com/niner/89b442aef9d41b650a4acf3a79c68dc1
11:47 lizmat afk&
12:08 [Tux] This is Rakudo version 2016.05-56-g85682a5 built on MoarVM version 2016.05-18-g1339332
12:08 [Tux] test            19.448
12:08 [Tux] test-t          12.120
12:08 [Tux] csv-parser      33.888
12:11 Ven joined #perl6-dev
12:28 Ven joined #perl6-dev
12:45 Ven joined #perl6-dev
13:03 brrt joined #perl6-dev
13:05 brrt good *
13:05 Ven joined #perl6-dev
13:06 jnthn o/ brrt
13:06 brrt \o jnthn
13:06 brrt any further on the issue of mixins / object structure extensions?
13:06 timotimo good.
13:07 nine Also a fun one: java.lang.LinkageError: loader (instance of  org/perl6/nqp/runtime/ByteClassLoader): attempted  duplicate class definition for name: "836BAC46652AF5708386DC6C31D0DC479214FAE6"
13:07 timotimo buh
13:09 jnthn brrt: I'm not sure that part will happen very soon. But note that that step is the one needed to make every object smaller; getting rid of the cases where we need to look at "is this the real body" thing is a separate step that we can do sooner.
13:09 psch nine: curiously, i only get an NPE with your nqp gist applied
13:09 psch and reliably only that
13:10 brrt hmm... and the container guards?
13:10 nine psch: my current rakudo diff: https://gist.github.com/niner/c49899d7912bc3699211b28efbc8c0b3
13:11 nine The change in src/core/control.pm probably fixes the NPE
13:11 jnthn brrt: The container guards probably sooner than either of those
13:11 nine Though until everything is working, it's hard to say if any change is for good or bad
13:11 jnthn brrt: After the return changes :)
13:12 psch nine: yeah, the EVAL change is probably behind the NPE
13:12 brrt oh right, that :-)
13:12 brrt exciting :-)
13:13 nine psch: with this change, add_additional_frames may even have become obsolete
13:13 timotimo i'm wondering ... we have a lot of code with "existskey? if yes, bindkey,atkey,or-deletekey"
13:14 timotimo should we perhaps have a little cache somewhere that'll make *key-after-existskey a bit faster?
13:15 timotimo hm. my perf profile for this has existskey at only 0.37%, but at_key at 5% and bind_key at 3.25%
13:18 * psch learned about ${ENV_VAR:=DEFAULT_IF_UNSET} just now
13:18 psch 'cause i want a way to spawn multiple -jdb-servers with different ports
13:18 timotimo ah, nice
13:19 psch although that's probably still iffy if there's no consistent failure mode...
13:19 psch well, or a StackOverflowError - catching that doesn't really help
13:20 psch not sure if that needs to be in nom though
13:49 psch hm, isn't the linkage error just because %?OPTIONS<mast_frames> survives too long?
13:54 nine Err...I have no idea?
13:54 nine I feel like I understand about 3/4ths of what's going on. That leaves a lot of unknown.
13:55 psch well, the error says we're loading a class we already loaded before
13:56 psch and we're sharing JAST::Class instances across compilations
14:00 AlexDaniel joined #perl6-dev
14:02 nine Aaand we need to stop doing that after the first non-nested comp unit
14:04 psch yeah, the error seems to happen because NativeCall compiles NativeCall::Types and the latter gets the same class name
14:06 nine What I wanted to achieve was that we share a JAST::Class between the outer comp unit and all nested comp units (as when we're loading multiple modules).
14:06 psch yeah, i think that's reasonable
14:07 psch uh, unless i misunderstand
14:07 psch is NC::Types nested in NC?
14:07 nine On MoarVM, add_additional_frames just merges those moar_frames hashes.
14:08 nine What's nested is the EVAL in src/core/CompUnit/PrecompilationUnit.pm:37
14:08 psch right, that's what i thought.  and yes, i still agree
14:35 nine Ok, I think, I'll just store the mast_frames hash in $*W. That should keep it safely within the current comp unit.
14:38 nine Though I think, I'm too spent to do this refactor today
15:08 hankache joined #perl6-dev
16:03 bisectable joined #perl6-dev
16:13 bisectable joined #perl6-dev
16:34 Ven joined #perl6-dev
16:43 Ven joined #perl6-dev
17:03 Ven joined #perl6-dev
17:22 Ven joined #perl6-dev
17:42 Ven joined #perl6-dev
17:46 brrt joined #perl6-dev
18:12 Ven joined #perl6-dev
18:32 Ven joined #perl6-dev
19:33 mst joined #perl6-dev
20:20 moritz hi all
20:21 moritz how hard would it be to introduce a weak reference type in Perl 6?
20:24 jdv79 out of curiousity what would be the benefit(s)/need(s)?
20:30 lizmat moritz: doesn't a weak reference imply refcounting, which we don't have ?
20:32 nine lizmat: works the same with any other GC. The reference just does not keep the object alive.
20:32 moritz lizmat: no, it means that weak references don't keep an object alive, and become undefined once the referenced object is collected
20:33 moritz jdv79: for example keeping a list of sublcasses whose method caches need to be invalidated on augmentation, without preventing the subclasses from getting collected
20:35 moritz or in general, keeping a list of things that might need some kind of cleanup, without keeping stuff alive
20:37 moritz seems the JVM has weak references
20:38 jnthn Moar doesn't. iirc, the typical algorithm for doing them is rather like the one used to make DESTROY work
20:38 moritz and ES6 has WeakMap
20:38 jnthn (Since you don't want "being on the finalization queue" to keep the object alive, so the finalization queue in itself is a kind of special-case weak ref)
20:39 jnthn We've also talked a bit recently about using a weakmap style data structure for storing extra attributes of mixins to P6opaques, so that we don't have to have every object that might be mixed into pay the price when the majority of the time that doesn't happen.
20:40 jnthn And weak refs would also remove a special case in Moar for SC handling.
20:40 jnthn So quite aside from it perhaps being interesting to provide weak reference types at a Perl 6 level, we might end up introducing them in Moar for infrastructural reasons.
20:41 jnthn They might also help us to solve the "methods in parent classes don't propagate to child classes" problem
20:48 moritz yeah, that was the use case I mentioned to jdv79
20:48 moritz though I probably didn't make a good job explailning it
20:50 jnthn Oh, I skimmed over that bit of the discussion somehow :)
21:08 jnthn Time for rest...see y'all tomorrow o/
21:08 jdv79 nite
21:19 lizmat gnight jnthn
23:22 sortiz joined #perl6-dev

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