Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-09-17

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

All times shown according to UTC.

Time Nick Message
00:15 Ven_ joined #perl6-dev
01:23 MasterDuke does anybody here know how to compile a moarvm with debugging (to use with valgrind) using rakudobrew?
01:33 committable6 joined #perl6-dev
01:35 committable6 joined #perl6-dev
01:46 committable6 joined #perl6-dev
01:46 committable6 joined #perl6-dev
01:51 dalek rakudo/nom: 25caab2 | hoelzro++ | src/core/REPL.pm:
01:51 dalek rakudo/nom: REPL: Offer all completions if we can't find a last identifier
01:51 dalek rakudo/nom:
01:51 dalek rakudo/nom: Fixes RT #125520
01:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/25caab2fe8
01:51 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125520
02:14 FROGGS joined #perl6-dev
02:23 committable6 joined #perl6-dev
02:42 dalek roast: fdfb717 | hoelzro++ | S32-exceptions/misc.t:
02:42 dalek roast: Write test for RT #129290
02:42 dalek roast: review: https://github.com/perl6/roast/commit/fdfb717faa
02:42 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129290
02:42 dalek rakudo/nom: 8a70c92 | hoelzro++ | src/Perl6/Grammar.nqp:
02:42 dalek rakudo/nom: Fixates borg and mystery at block start
02:42 dalek rakudo/nom:
02:42 dalek rakudo/nom: Fixes RT #129290.
02:42 dalek rakudo/nom:
02:42 dalek rakudo/nom: The way this used to work was complete blocks would set $*BORG<block>,
02:42 dalek rakudo/nom: which missing_block would use to provide error information.  The problem
02:42 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129290
02:42 dalek rakudo/nom: with this is if you start parsing a block (let's call it A), and create
02:42 dalek rakudo/nom: a complete block (named B) within A.  If there is no closing brace to
02:42 dalek rakudo/nom: terminate A, missing_block will be called, but the block context set
02:42 dalek rakudo/nom: up for B will be used to explain the error because it was the last
02:42 dalek rakudo/nom: block to successfully parse.
03:03 travis-ci joined #perl6-dev
03:03 travis-ci Rakudo build failed. Rob Hoelz 'REPL: Offer all completions if we can't find a last identifier
03:03 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160602351 https://github.com/rakudo/rakudo/compare/ab68f823b2ec...25caab2fe810
03:03 travis-ci left #perl6-dev
03:03 buggable [travis build above] ☠ Did not recognize some failures. Check results manually
03:45 travis-ci joined #perl6-dev
03:45 travis-ci Rakudo build errored. Rob Hoelz 'Fixates borg and mystery at block start
03:45 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160606683 https://github.com/rakudo/rakudo/compare/25caab2fe810...8a70c921e98e
03:45 travis-ci left #perl6-dev
03:46 buggable [travis build above] ☠ Did not recognize some failures. Check results manually
04:16 travis-ci joined #perl6-dev
04:16 travis-ci Rakudo build errored. Rob Hoelz 'Fixates borg and mystery at block start
04:16 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160606683 https://github.com/rakudo/rakudo/compare/25caab2fe810...8a70c921e98e
04:16 travis-ci left #perl6-dev
04:16 buggable [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0)
04:32 committable6 joined #perl6-dev
04:32 bisectable6 joined #perl6-dev
04:32 benchable6 joined #perl6-dev
04:56 gfldex joined #perl6-dev
06:33 lizmat Files=1138, Tests=52914, 232 wallclock secs (12.96 usr  3.94 sys + 1416.67 cusr 135.54 csys = 1569.11 CPU)
06:45 dalek roast: 48fc682 | lizmat++ | S10-packages/precompilation.t:
06:45 dalek roast: Need a little rest to pass on OSX
06:45 dalek roast: review: https://github.com/perl6/roast/commit/48fc682f5a
06:46 lizmat commute&
06:47 dalek roast: 2f870af | usev6++ | S0 (3 files):
06:47 dalek roast: Fudge some tests for JVM
06:47 dalek roast: review: https://github.com/perl6/roast/commit/2f870af921
07:49 RabidGravy joined #perl6-dev
08:08 Ven_ joined #perl6-dev
08:20 [Tux] This is Rakudo version 2016.08.1-214-g8a70c92 built on MoarVM version 2016.08-47-g2eedba8
08:20 [Tux] csv-ip5xs        9.552
08:20 [Tux] test            15.926
08:20 [Tux] test-t           6.947
08:20 [Tux] csv-parser      17.397
08:24 Zoffix MasterDuke, cd nqp/MoarVM; perl Configure.pl --debug=3 --optimize=1; make; make install; cd ../../
08:25 Zoffix I think there should also be some sort of --full-clean-up or something to tell it to clean stuff up and not leave it up to the OS; otherwise valgrind will think stuff's leaking
08:26 Zoffix but maybe --debug=3 handles that I dunno
08:29 nine Zoffix: like moar's --full-cleanup    try to free all memory and exit cleanly
09:00 Ven_ joined #perl6-dev
09:02 dalek rakudo/nom: fd5ef86 | (Zoffix Znet)++ | docs/ChangeLog:
09:02 dalek rakudo/nom: Log all changes to date
09:02 dalek rakudo/nom:
09:02 dalek rakudo/nom: Logs 25caab2
09:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fd5ef86931
09:09 Ven_ joined #perl6-dev
09:10 lizmat joined #perl6-dev
09:57 travis-ci joined #perl6-dev
09:57 travis-ci Rakudo build failed. Zoffix Znet 'Log all changes to date
09:57 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160635744 https://github.com/rakudo/rakudo/compare/8a70c921e98e...fd5ef86931a2
09:57 travis-ci left #perl6-dev
09:57 buggable [travis build above] ☠ Did not recognize some failures. Check results manually
10:00 Zoffix union native call test again
10:18 nine Looks like there's a lot of performance improvements waiting to happen in Inline::Perl5. Right now, passing data form Perl 5 to Perl 6 must be incredibly expensive the way it is implemented. Also rather simple to improve.
10:18 nine I would just love to have better benchmarks of real world systems to play with.
10:34 nine Sometimes good old Perl is much line noise indeed: $$self->$at_key($key)
10:36 Zoffix :)
10:36 nine But I'm glad, I discovered the way to call methods with hypenated names like AT-KEY from Perl 5 code :)
11:15 MasterDuke Zoffix: rakudobrew build moar --configure-opts='--moar-option="--debug"' seemed to have helped
11:28 lizmat joined #perl6-dev
12:27 Zoffix m: ('a'…'z').map({”"$_ \{ ”}).join.map({"$_'😂'{.flip.trans: '{' => '}'}"}).say
12:27 camelia rakudo-moar fd5ef8: OUTPUT«("a { "b { "c { "d { "e { "f { "g { "h { "i { "j { "k { "l { "m { "n { "o { "p { "q { "r { "s { "t { "u { "v { "w { "x { "y { "z { '😂' } z" } y" } x" } w" } v" } u" } t" } s" } r" } q" } p" } o" } n" } m" } l" } k" } j" } i" } h" } g" } f" } e" } d" } c…»
12:27 Zoffix m: ('a'…'z').map({”"$_ \{ ”}).join.map({"$_'😂'{.flip.trans: '{' => '}'}"}).EVAL.say
12:27 camelia rakudo-moar fd5ef8: OUTPUT«a b c d e f g h i j k l m n o p q r s t u v w x y z 😂 z y x w v u t s r q p o n m l k j i h g f e d c b a␤»
12:27 Zoffix ^_^
12:28 Zoffix Also, I think there's a bug:
12:28 Zoffix m: say ('a'…'c').map({”"$_ \{ ”}).join.map({($_, .flip.trans('{' => '}'))})[0]
12:28 camelia rakudo-moar fd5ef8: OUTPUT«("a { "b { "c {   } c" } b" } a")␤»
12:28 Zoffix Why is the resultant string joined? My map is returning two elements
12:28 Zoffix *supposed to return
12:28 timotimo because when you say it, it just puts a space in between?
12:28 Zoffix timotimo, I have [0] at the end
12:29 timotimo ah
12:29 Zoffix m: say ('a'…'c').map({”"$_ \{ ”}).join.map({($_, .flip.trans('{' => '}'))}).elems
12:29 camelia rakudo-moar fd5ef8: OUTPUT«1␤»
12:29 timotimo ah, you're not slipping it properly, i bet
12:29 timotimo m: (^10).map({$_, $_ * 2}).perl.say
12:29 camelia rakudo-moar fd5ef8: OUTPUT«((0, 0), (1, 2), (2, 4), (3, 6), (4, 8), (5, 10), (6, 12), (7, 14), (8, 16), (9, 18)).Seq␤»
12:29 timotimo you see?
12:29 Zoffix Ah
12:29 Zoffix timotimo++
12:31 MasterDuke timotimo: you've done some of the MoarVM IO stuff, does this look like a simple fix? RT #129291
12:31 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129291
12:32 timotimo that looks strange
12:32 dogbert17 o/ Zoffix, only one spectest still failing on my 32 bit Linux vm. jnthn and timotimo took care of the rest
12:32 Zoffix cool
12:33 timotimo opaque_get_real_data is about objects with mixins
12:33 timotimo i did anything? o_O
12:33 dogbert17 timotimo: some GC and failure trickry
12:34 dogbert17 the last subtest in t/spec/S32-num/power.rakudo.moar is the only one left
12:34 timotimo ah, that
12:34 MasterDuke timotimo: line 37 of syncpipe.c: MVM_free(data->process->data);
12:34 timotimo well, that was just a simple warning
12:34 timotimo it meant almost nothing :)
12:35 dogbert17 timotimo: true, but it was annoying :)
12:36 dogbert17 on my system the following throws: say 1.0000001 ** (10 ** 9)
12:36 Zoffix buggable, test
12:37 Zoffix Hm. Buggable seems to be slowly leaking.
12:38 Zoffix 1232M RES
12:42 Zoffix left #perl6-dev
12:43 buggable joined #perl6-dev
12:45 NeuralAnomaly joined #perl6-dev
12:45 NeuralAnomaly joined #perl6-dev
12:53 nine Wrapping P5 hashes instead of copying: 15s -> 7s. Wrapping P6 hashes instead of copying: 7s -> 17s :(
13:00 mst how odd
13:00 nine Of course, that's just the first try with all the tieing done in Perl 5 code
13:13 nine Note only that but all access to the P6 hash goes through the very generic call_method which cannot help performance.
13:13 nine Still, it's hard to say with code spread between Perl 6, C and Perl 5 and no tool understanding that :/
13:14 timotimo with the p5 hash repr that could become a whole lot faster
13:14 timotimo however, you'll have to create the hash on the perl6 side as a perl5 hash from the start
13:15 timotimo but:
13:16 timotimo if you transfer it over from the perl6 hash into the perl5 hash via a perl5 hash repr, it'll be without NativeCall overhead
13:16 timotimo and you can write some very tight code to do the transfer
13:18 AlexDaniel joined #perl6-dev
13:32 moritz any more comments on https://github.com/rakudo/rakudo/pull/719 ?
13:33 moritz if not, I'll merge it
13:43 Zoffix joined #perl6-dev
13:44 Zoffix moritz, I rather we did not name it .args
13:46 nine timotimo: what would be a good place to look into reprs?
13:46 Zoffix Maybe make it a private method and tell it to trusts that exception
13:47 timotimo there might be some doc about reprs in the nqp repo? don't know about that. other than that, just the 6model/reprs/ folder in moarvm
13:47 timotimo there's a header file in 6model, maybe it's 6model.h, that has a bunch of comments for all the functions you can install for a repr
13:47 timotimo the ReprOps
13:52 nine If I go that way, I'm gonna need to provide the repr implementaion for all backends, aren't I?
13:52 timotimo oh, hmm
13:52 timotimo if you don't do it on JVM, declaring a class with "is repr('P5Hash')" will throw
13:55 timotimo another thing that we'll havee to think about is memory ownership
13:55 timotimo we don't really have proper memory ownership for CStruct and CArray, it feels like
14:04 Ven_ joined #perl6-dev
14:16 Ven_ joined #perl6-dev
14:28 Ven__ joined #perl6-dev
14:29 arnsholt Yeah, NativeCall has no way to control ownership of bits of memory
14:30 timotimo well, "control" might not be the right word
14:30 mst maybe we can ... borrow ... from rust
14:31 arnsholt Signal ownership, perhaps?
14:31 arnsholt Oh, and boo mst =p
14:31 arnsholt But good pun, still =D
14:35 Ven_ joined #perl6-dev
14:38 nine Looks like Dancer2 just really likes to write the same values into the %tokens hash again and again
14:40 Zoffix Oh. MoarVM was already released
14:40 timotimo yup :)
14:40 timotimo now we can put all our crazy experimental stuff into moarvm!
14:41 Zoffix \o/
14:41 nine And I lost the speedup of wrapping the P5 hash because originally that's actually a P6 hash. So my 3 write accesses into that are now really fast, but the 80 accesses by Dancer2 are slow
14:41 hoelzro o/ #perl6-dev
14:42 Ven_ joined #perl6-dev
14:42 tadzik ooh, work on wrapping Dancer2 efficiently? :3
14:45 nine Well, I'll be at https://www.perl.dance/ next week, so I thought I could add a little Dancer 2 example ;)
14:50 nine Can an AT-KEY on a defined hash throw any exceptions?
14:52 RabidGravy joined #perl6-dev
14:55 timotimo hm. what if there's a Failure stored in the hash. it might get thrown when something along the path sinks it?
14:56 nine The thought of Failures interacting with Perl 5 code is disturbing.
14:56 dalek nqp/rt-126900: f0540d5 | hoelzro++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
14:56 dalek nqp/rt-126900: Verify we still have a block when climbing lexical stack
14:56 dalek nqp/rt-126900:
14:56 dalek nqp/rt-126900: Fixes RT #126900
14:56 dalek nqp/rt-126900:
14:56 dalek nqp/rt-126900: Resolving lexicals in an outer block runs out of blocks if we try
14:56 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=126900
14:56 dalek nqp/rt-126900: to resolve a natively-typed (ex. my int) lexical from within a
14:56 dalek nqp/rt-126900: Perl 6 EVAL
14:56 dalek nqp/rt-126900: review: https://github.com/perl6/nqp/commit/f0540d5a21
14:57 dalek rakudo/nom: a02ac71 | MasterDuke17++ | tools/build/create-moar-runner.pl:
14:57 dalek rakudo/nom: Add '--full-cleanup' to moar in perl-valgrind-m
14:57 dalek rakudo/nom:
14:57 dalek rakudo/nom: Gives more accurate memory leak information.
14:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a02ac71d1e
14:57 dalek rakudo/nom: 3583e26 | (Zoffix Znet)++ | tools/build/create-moar-runner.pl:
14:57 dalek rakudo/nom: Merge pull request #881 from MasterDuke17/add_--full-cleanup_to_perl-valgrind-m
14:57 dalek rakudo/nom:
14:57 dalek rakudo/nom: Add '--full-cleanup' to moar in perl-valgrind-m
14:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3583e265d3
14:57 hoelzro I took a stab at fixing https://rt.perl.org/Ticket/Display.html?id=126900 last night; I managed to produce a fix in NQP-land, but I would like someone to sanity check it
14:57 hoelzro would anyone mind having a look at nqp/rt-126900?
14:58 hoelzro it adds some additional checking to a while loop when climbing the lexical frames
14:58 hoelzro when looking up a lexical that has a native type (like my int) in an EVAL
14:59 hoelzro the thing that makes me hesitate is if I did my int $i = 1; do { $i = 2 }, the lookup would succeed
14:59 hoelzro whereas my change is making it bail out for my int $i = 1; EVAL '$i = 2'
15:13 hoelzro ah, I see; it's used by NQP to determine if a native assignment can be done or not
15:15 nine Yes! Providing specialized callbacks for Hash access instead of going over the generic call_method is much faster indeed :)
15:16 mst \o/
15:19 Ven_ joined #perl6-dev
15:26 nine This also indicates that it may pay off to have special call_method_single_arg and call_method_no_args variants
15:27 Ven_ joined #perl6-dev
15:29 timotimo quite probably
15:29 timotimo nativecall in general could probably benefit from a few special roles that are differentiated in that way
15:33 Ven_ joined #perl6-dev
15:56 Ven_ joined #perl6-dev
16:02 travis-ci joined #perl6-dev
16:02 travis-ci Rakudo build passed. Zoffix Znet 'Merge pull request #881 from MasterDuke17/add_--full-cleanup_to_perl-valgrind-m
16:02 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160672079 https://github.com/rakudo/rakudo/compare/fd5ef86931a2...3583e265d3e3
16:02 travis-ci left #perl6-dev
16:03 Zoffix shoo
16:14 Ven_ joined #perl6-dev
16:16 nine Ok, down to 11s on my benchmark (progression is 15 -> 7 -> 17 -> 13 -> 11)
16:18 * TimToady wonders if that sequence is in the oeis...
16:26 timotimo .o( oh, eis! )
16:30 Ven_ joined #perl6-dev
16:32 Zoffix oh god, what have I done
16:32 Zoffix Oh. nm. Wrong box :P
16:34 mst hah
16:37 nine Wow. Removing the indirection of going via Perl 5 functions for FETCH/STORE and replacing them with a single line of C code saves.... nothing. Not measurable.
16:37 Ven_ joined #perl6-dev
16:43 NeuralAnomaly joined #perl6-dev
16:46 Ven_ joined #perl6-dev
16:46 nine Apparently creating shallow copies of hashes ($new = { %$old, ... }) is quite common in Dancer2's code. I wonder if there's a way to speed that up. Right now, perl calls FIRSTKEY, then NEXTKEY until that returns undef and then for each of the keys a FETCH.
16:47 nine No wonder we do ~ 500 NativeCalls for rendering a trivial page.
16:49 mst that's quite common in perl5 code in general tbh
16:53 nine Yep. And I don't see anything wrong with it. I just don't know how to improve performance there.
16:58 Ven_ joined #perl6-dev
17:05 lizmat joined #perl6-dev
17:07 dalek rakudo/nom: 4549642 | hoelzro++ | src/Perl6/Grammar.nqp:
17:07 dalek rakudo/nom: Add LEFT DOUBLE PARENTHESIS to valid comment openers
17:07 dalek rakudo/nom:
17:07 dalek rakudo/nom: It would be really nice if we could drop opener or define it
17:07 dalek rakudo/nom: in terms of $brackets from nqp/src/HLL/Grammar.nqp
17:07 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/454964263b
17:12 Ven_ joined #perl6-dev
17:13 NeuralAnomaly joined #perl6-dev
17:18 Ven_ joined #perl6-dev
17:23 Ven_ joined #perl6-dev
17:27 Ven__ joined #perl6-dev
17:35 japhb nine: What do the fast Perl 5 data structure serializer modules do?  I would think a similar technique could be used.
18:00 arnsholt nine: 500 NativeCalls. I'm afraid to even contemplate how slow that is >.<
18:03 travis-ci joined #perl6-dev
18:03 travis-ci Rakudo build failed. Rob Hoelz 'Add LEFT DOUBLE PARENTHESIS to valid comment openers
18:03 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160692088 https://github.com/rakudo/rakudo/compare/3583e265d3e3...454964263b3b
18:03 travis-ci left #perl6-dev
18:05 Zoffix just a t/04-nativecall/13-union.t
18:09 mst nine: make the tied thing cache a perl5 side copy on FIRSTKEY and blow the cache if mutated?
18:16 NeuralAnomaly joined #perl6-dev
18:23 NeuralAnomaly joined #perl6-dev
18:24 Zoffix NeuralAnomaly, hey
18:24 NeuralAnomaly Zoffix, yo
18:24 Zoffix NeuralAnomaly, it's time
18:24 NeuralAnomaly Zoffix, Oh boy! Really?! We're doing a realease‽‽ YEY!
18:24 Zoffix Yup.
18:24 Zoffix NeuralAnomaly, cut the release
18:24 NeuralAnomaly Zoffix, Will do! If you're feeling particularly naughty, you can watch me at http://perl6.fail/release/progress or go look at some cats http://www.lolcats.com/
18:24 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ Prep done
18:24 dalek nqp: e8c5e73 | (Zoffix Znet)++ | tools/build/MOAR_REVISION:
18:24 dalek nqp: bump MoarVM version to 2016.09
18:24 dalek nqp: review: https://github.com/perl6/nqp/commit/e8c5e73551
18:24 dalek nqp: a984cfc | (Zoffix Znet)++ | VERSION:
18:24 dalek nqp: bump VERSION to 2016.09
18:24 dalek nqp: review: https://github.com/perl6/nqp/commit/a984cfc193
18:25 nine Zoffix++ # not only automating the release, but making it fun :)
18:25 Zoffix :)
18:26 Zoffix BAHAHA
18:26 Zoffix Fucking google
18:28 Zoffix I was running a "preemptive" instance all day long (one that might get killed at any time, but it's much cheaper). I then turned it off, went to turn off preemptibility, but there's no switch. You have to create a whole new VM. So I thought, screw it, started it again..... And well, google killed it shortly after :)
18:28 Zoffix And I notice they do it that way frequently :)
18:28 MasterDuke Zoffix++ google--
18:29 geekosaur you get what you pay for
18:30 NeuralAnomaly joined #perl6-dev
18:30 NeuralAnomaly joined #perl6-dev
18:30 Zoffix geekosaur, I don't mind, but having a switch to pay more would be more helpful :)
18:30 Zoffix an easy switch
18:30 Zoffix NeuralAnomaly, steps
18:30 NeuralAnomaly Zoffix, all pre nqp r post pre-r6 pre-blank-slate nqp-clone nqp-bump-vers nqp-build nqp-tar nqp-tar-build nqp-tag nqp-tar-sign nqp-tar-copy r-clone r-prep-ann r-bump-vers r-build r-p5 r-stress r-stress-v6c r-tar r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp
18:31 Zoffix NeuralAnomaly, run nqp-build nqp-tar nqp-tar-build nqp-tag nqp-tar-sign nqp-tar-copy r-clone r-prep-ann r-bump-vers r-build r-p5 r-stress r-stress-v6c r-tar r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp
18:31 NeuralAnomaly Zoffix, ☠☠☠☠☠☠ NQP: build and test
18:31 NeuralAnomaly Zoffix, ☠☠☠☠☠☠☠☠☠☠ ABNORMAL EXIT!
18:31 Zoffix lol
18:31 Zoffix Ah, right
18:32 Zoffix NeuralAnomaly, run pre-blank-slate nqp-clone nqp-build nqp-tar nqp-tar-build nqp-tag nqp-tar-sign nqp-tar-copy r-clone r-prep-ann r-bump-vers r-build r-p5 r-stress r-stress-v6c r-tar r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp
18:32 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ Prep done
18:34 Zoffix Off to a rocky start, but not a problem :)
18:36 Ven_ joined #perl6-dev
18:41 AlexDaniel Zoffix++ # pretty cool bot
18:41 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ nqp tests OK
18:42 Zoffix AlexDaniel, my favourite part is this:   subset BotAdmin of IRC::Client::Message where .host eq conf<bot-admins>.any;    multi method irc-to-me (BotAdmin $e where /:i ^ 'run' $<steps>=.+ $/ ) { ... }
18:42 Zoffix <3 subsets
18:45 AlexDaniel .tell jnthn It looks like half of my segmentation faults will go away if #129291 is fixed. Perhaps you can take a look? That would be great.
18:45 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129291
18:45 yoleaux2 AlexDaniel: I'll pass your message to jnthn.
18:50 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ nqp release tarball tests OK
18:51 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ nqp release DONE
18:51 dalek rakudo/nom: e46da6b | (Zoffix Znet)++ | docs/announce/2016.09.md:
18:51 dalek rakudo/nom: Generate release announcement for 2016.09
18:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e46da6b8f4
18:51 dalek rakudo/nom: 257083d | (Zoffix Znet)++ | tools/build/NQP_REVISION:
18:51 dalek rakudo/nom: [release] bump NQP revision
18:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/257083d8f7
18:51 dalek rakudo/nom: 4b32fca | (Zoffix Znet)++ | VERSION:
18:51 dalek rakudo/nom: [release] bump VERSION to 2016.09
18:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4b32fcab21
18:52 Zoffix Well, the bot got the NQP tag right. So it did better than me already :P
18:56 stmuk does the bot get credit in release_guide.pod? :)
18:56 stmuk "pay no attention to the man behind the curtain" :P
18:56 Zoffix stmuk++
18:58 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ Rakudo stresstest (master) OK
19:00 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ Rakudo stresstest (6.c-errata) OK
19:08 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ Rakudo release DONE
19:08 NeuralAnomaly Zoffix, ♥♥♥♥♥♥ Post: upload tarballs to rakudo.org
19:08 NeuralAnomaly Zoffix, 🎺🎺🎺📯📯📯📯📯📯🌈🌈🌈📦📦📦
19:08 NeuralAnomaly Zoffix, The release of **Rakudo #103 2016.09** has now been completed
19:08 NeuralAnomaly Zoffix, 🎺🎺🎺📯📯📯📯📯📯🌈🌈🌈📦📦📦
19:08 * NeuralAnomaly celebrates with an appropriate amount of fun
19:09 Zoffix NeuralAnomaly, thanks for doing the release!
19:09 NeuralAnomaly Zoffix, any time, buddy!
19:11 Zoffix New blog post: "Perl6.Fail, Release Robots, and Other Goodies": http://perl6.party/post/Perl6-Fail-Release-Robots-And-Other-Goodies
19:16 dalek rakudo/nom: f111f07 | (Zoffix Znet)++ | docs/release_guide.pod:
19:16 dalek rakudo/nom: 2016.09 is now in the past
19:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f111f0735e
19:22 stmuk dual credit :)
19:32 dalek rakudo/nom: c4fd9f5 | moritz++ | src/core/ (2 files):
19:32 dalek rakudo/nom: Include command in X::Proc::Unsuccessful output.
19:32 dalek rakudo/nom:
19:32 dalek rakudo/nom: Closes #719. rudis++ for the original patch that this
19:32 dalek rakudo/nom: one is based on.
19:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c4fd9f515d
19:32 jnthn Zoffix++ # so much awesome
19:32 yoleaux2 16 Sep 2016 19:50Z <japhb> jnthn: When you get a few cycles, could you sketch out how you would want async SSL/TLS to even work with your new NQP async streaming APIs, so one of us could do the grunt work?
19:32 yoleaux2 18:45Z <AlexDaniel> jnthn: It looks like half of my segmentation faults will go away if #129291 is fixed. Perhaps you can take a look? That would be great.
19:32 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=129291
19:33 jnthn Heh, two different people have now asked me to look at that bug today. :P Will throw some tuits at it next week :)
19:33 Zoffix moritz++
19:35 Ven_ joined #perl6-dev
19:47 travis-ci joined #perl6-dev
19:47 travis-ci Rakudo build passed. Zoffix Znet '[release] bump VERSION to 2016.09'
19:47 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160707645 https://github.com/rakudo/rakudo/compare/454964263b3b...4b32fcab2192
19:47 travis-ci left #perl6-dev
19:57 Ven_ joined #perl6-dev
20:04 b2gills joined #perl6-dev
20:16 Ven_ joined #perl6-dev
20:27 travis-ci joined #perl6-dev
20:27 travis-ci Rakudo build passed. Zoffix Znet '2016.09 is now in the past'
20:27 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160711689 https://github.com/rakudo/rakudo/compare/4b32fcab2192...f111f0735ead
20:27 travis-ci left #perl6-dev
20:31 Ven_ joined #perl6-dev
20:58 Ven_ joined #perl6-dev
20:59 NeuralAnomaly joined #perl6-dev
21:03 travis-ci joined #perl6-dev
21:03 travis-ci Rakudo build passed. Moritz Lenz 'Include command in X::Proc::Unsuccessful output.
21:03 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160714025 https://github.com/rakudo/rakudo/compare/f111f0735ead...c4fd9f515d49
21:03 travis-ci left #perl6-dev
21:04 moritz that only took 1.5h :-)
21:04 Zoffix :)
21:05 Ven_ joined #perl6-dev
21:10 Ven_ joined #perl6-dev
21:26 japhb Zoffix++  # Release bot of great puissance
21:26 Zoffix bruh, we get it stuff passes now... go away.
21:26 Zoffix Oh, oops.
21:27 Zoffix My scroll was up and I saw the highlight, but the scroll was a travis saying stuff passed :)
21:27 * Zoffix looks up puissance
21:28 mst it means you're a kitty
21:28 Zoffix "a competition in showjumping that tests a horse's ability to jump a limited number of large obstacles"
21:28 Zoffix heh
21:28 geekosaur from French, "powerful"
21:31 jnthn japhb: oops, I forgot to respond to your .tell... In short: I'd love help, but I suspect the only way I'll get to the point of having a suggestion of a sensible way to do it is to actually get so far as having a basic example working. :S
21:32 jnthn japhb: I could more than happily hand off the rest of it once I get to that point though.
21:32 japhb jnthn: Hmmm, yeah, I can see that
21:32 japhb Fair enough
21:32 jnthn My gut feeling from what I've seen so far is that we can feed the incoming packets into a BIO or whatever they're called
21:33 jnthn I'd really like us to do the cooridnation of it Perl 6 side.
21:33 jnthn I'm most of the way through untangling string decoding and async sockets; I'd rather not make another fragile tangle.
21:33 japhb Yeah, agreed.
21:34 jnthn Seems like any string decoding is downstream of the SSL bit though.
21:35 japhb Yeah.  And if it was just a simple streaming layer, then I would say "Wheee, layered decoders!", but SSL has a state machine that is rather different from e.g. a codepoint compositor
21:36 jnthn For sure, it needs to be able to do back and forth on the underlying socket
21:36 jnthn Before it's ready to send your stuff or tell you what's incoming
21:36 japhb right
21:41 MasterDuke jnthn: i don't want to be a bother (so feel free to punt), but re my ticket about run+:in+:out, do you suspect there's an easy/straightforward fix? i've been playing around with it, but don't see how to prevent the one thread from reaching into the other
21:45 jnthn MasterDuke: Didn't look it that closely yet, and don't have any magical intuition on this one, sorry.
21:46 jnthn (I didn't write that chunk of the code in the first place, so step one will be for me to understand it. :))
21:46 MasterDuke no worries
21:47 jnthn The valgrind output is suggestive that we do a mis-timed free and that ends up causing all manner of downstream problems
21:47 jnthn I think most of the output is noise
21:47 jnthn Arising from an undefined value propagating through the system
21:48 MasterDuke yeah. if i comment out the free the segfault goes away, but valgrind still complains about reading across threads
21:48 jnthn So probably only the invalid free itself and maybe the thing right after it are significant.
22:02 * arnsholt scrollbacks regarding SSL
22:03 arnsholt japhb: So, if you wrap OpenSSL I think you could more or less get away with layered decoders
22:04 timotimo arnsholt: oh, you're going to lay the wisdom upon us for how to get IO::Socket::SSL::Async to work? :)
22:04 arnsholt I'm less familiar with the async side of the API, sadly
22:04 arnsholt I started out with the blocking API, knowing that async is full of additional horrors
22:05 arnsholt The main complication, AFAICT, is that a read can fail because the socket wants a write and conversely a write can fail because you have to read
22:05 arnsholt (Yes, really)
22:05 arnsholt Because of the underlying protocol sometimes requiring additional data exchanges
22:06 arnsholt But the OpenSSL API, IO-wise at least, itself is basically just reading and writing bytes
22:07 japhb arnsholt: Yeah, it appears from the ecosystem that we already have the sync interface more or less.  It's the async that has me worried.  And if as jnthn suggests we want to do the protocol coordination in Perl 6, that's a lot of layers to punch the asynchrony through
22:07 arnsholt Yah
22:07 Ven_ joined #perl6-dev
22:08 arnsholt And the OpenSSL C API is kind of horrifying
22:08 japhb Especially handshake, changing cyphers, etc.
22:08 timotimo well, now that encoding/decoding is going to move more and more into our user space, building an async thing on top of IO::Socket::SSL can be done well, i expect?
22:09 japhb timotimo: connect has a full handshake.  Connecting (from a client or a listen port) can block for a long time.
22:09 timotimo OK, so we might have to spawn a full thread for it to work?
22:09 japhb And don't we currently have the problem that the sync IO layer is plumbed through libuv, so we can't just go threadshifting that pain?
22:10 timotimo oh
22:10 timotimo that's a thing, yes
22:10 timotimo but if we spawn a full thread to handle a single ssl connection, we'll have everything happen in that thread anyway?
22:10 japhb Like if we pushed a client connect into another thread, we couldn't use the socket in the original thread once it connected
22:10 japhb But that's not really an async API, that's a threaded connection API
22:11 timotimo well, it'll just give the user a supply for receiving data and probably move data-to-be-sent via a channel
22:11 japhb In other words, yeah, we could probably hack something together, but it'd be a damaged API, and probably not terribly safe to boot.
22:11 timotimo the thread is just an implementation detail
22:12 japhb timotimo: Threads are only an implementation detail up until the abstraction leaks
22:13 japhb .oO( I hate it when a shuffled playlist ends up with a horribly jarring transition )
22:16 Ven_ joined #perl6-dev
22:17 timotimo :)
22:17 timotimo i don't know how other projects handle many SSL sockets
22:20 timotimo maybe there's a select-like function provided by openssl where we can multiplex multiple sockets over a single worker thread?
22:20 japhb FWIW I have a use case for different security protocols than classic TCP SSL/TLS, so whatever design we end up with shouldn't bake that assumption in
22:20 japhb timotimo: Good question.
22:24 jnthn I'd really hope we can implemnet it in a way that isn't thread-tied...
22:25 jnthn As arnsholt said though, I get the impression that the BIO interface lets you "just" treat it as shoving stuff into buffers when it arrives over the network, and writing stuff out from the buffers OpenSSL gives you back.
22:26 jnthn Async isn't *that* much scarier. Instead of blocking on a recv, you get a callback when the recv happens. And writing is about the same.
22:27 jnthn And provided you do it in a supply block you've got concurrency control "for free"
22:30 Zoffix m: multi sub infix:<==> (Int $a, Str $b) { $a == $b }
22:31 camelia rakudo-moar c4fd9f: OUTPUT«(timeout)»
22:31 Zoffix m: multi sub infix:<==> (Int $a, Str $b) { say "but not this"; $a == $b }
22:31 camelia rakudo-moar c4fd9f: ( no output )
22:31 Zoffix Any hints on where to start looking for a fix for stuff like thiat?
22:32 Zoffix Hm, --optimize=0 avoid it. I'm guessing I want https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Optimizer.nqp
22:34 jnthn That may fall under "you got what you deserved"... :/
22:35 jnthn == is marked "is pure" or so, meaning we constant fold it. To constant fold it, we run it at compile time. The halting problem says hi...
22:35 dalek rakudo/nom: 8fb9ec9 | timotimo++ | lib/NativeCall.pm6:
22:35 dalek rakudo/nom: prevent Native routines from being setup concurrently
22:35 dalek rakudo/nom:
22:35 dalek rakudo/nom: i use one global lock instead of a per-routine lock
22:35 dalek rakudo/nom: because this setup method won't run often, and usually
22:35 dalek rakudo/nom: only during the initial phases of an individual workload.
22:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8fb9ec9176
22:36 Zoffix m: multi sub infix:<==> (Int $a, Int $b) { $a == $b }
22:36 camelia rakudo-moar c4fd9f: ( no output )
22:36 Zoffix How come this doesn't get the same issue?
22:36 jnthn oh wait, wtf
22:36 timotimo hah
22:36 jnthn That isn't even constant folding
22:36 timotimo inlining perhaps?
22:36 japhb I was gonna say
22:37 timotimo the "say" might prevent inlining in one case
22:37 * jnthn is sleep deprived :)
22:37 jnthn Or :( perhaps...
22:37 timotimo hm, no, inlining wouldn't do this recursively ad infinitum
22:37 jnthn Indeed. No, I don't know what it is, but the optimizer is the place to look
22:37 jnthn It *may* be compile-time multi resolution gone wild
22:49 Zoffix Int,Int doesn't have the issue because it's ambiguous with Int:D, Int:D defined in core
22:51 Zoffix I'm just gonna close that ticket. The sub can't be used anyway, so there's no point in trying to make it compile, I think.
22:56 jnthn I'd say we should track down/fix the hang though
22:56 jnthn It's not very nice behavior
22:56 jnthn And it might end up being a bug that could affect something else that's more legitimate
22:59 Zoffix Alright. I'll track down where it happens.
23:13 dalek rakudo/nom: 31c4c6f | (Zoffix Znet)++ | src/Perl6/Compiler.nqp:
23:13 dalek rakudo/nom: Fix typo in comment and remove trailing whitespace
23:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/31c4c6f7aa
23:19 jnthn sleep &
23:26 travis-ci joined #perl6-dev
23:26 travis-ci Rakudo build failed. Timo Paulssen 'prevent Native routines from being setup concurrently
23:26 travis-ci https://travis-ci.org/rakudo/rakudo/builds/160739076 https://github.com/rakudo/rakudo/compare/c4fd9f515d49...8fb9ec91766e
23:26 travis-ci left #perl6-dev
23:27 Zoffix t/04-nativecall/13-union.t

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