Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-02-23

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

All times shown according to UTC.

Time Nick Message
00:11 pyrimidine joined #perl6-dev
00:22 IOninja cool
00:51 llfourn joined #perl6-dev
00:58 pyrimidine joined #perl6-dev
01:38 llfourn joined #perl6-dev
02:25 travis-ci joined #perl6-dev
02:25 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Make %% about 14x faster for Int,Int case
02:25 travis-ci https://travis-ci.org/rakudo/rakudo/builds/204332866 https://github.com/rakudo/rakudo/compare/742573724c69...755e25bd575c
02:25 buggable [travis build above] ✓ All failures are due to timeout (0), missing build log (1), or GitHub connectivity (0).
02:25 travis-ci left #perl6-dev
02:28 kalkin- joined #perl6-dev
02:32 IOninja Has SeekFromCurrent, SeemFromBeginning, etc. stuff been bikeshed to death?
02:33 IOninja Wondering why such long-to-type args as opposed to just :start, :current, :end named args
02:33 IOninja and global Enums vs. named args too
02:34 IOninja the only seek tests I recall are the ones I wrote a month or so back...
02:34 IOninja .. I think...
02:35 IOninja mhm, no matches for `grep -R 'Seek' .` in 6.c-errata
02:35 * IOninja will propose this for a change in the Action Plan for the IO grant
02:36 IOninja .oO( :from-beginning, :from-current, :from-end  )
02:38 IOninja m: @*ARGS = '--foo=SeekFromEnd'; sub MAIN (Str :$foo) {}
02:38 camelia rakudo-moar 90dfdf: OUTPUT: «Usage:␤  <tmp> [--foo=<Str>] ␤»
02:38 IOninja tehe :)
03:05 mr_ron joined #perl6-dev
03:37 pyrimidine joined #perl6-dev
03:55 MasterDuke left #perl6-dev
03:55 MasterDuke joined #perl6-dev
04:27 agentzh joined #perl6-dev
05:28 pyrimidine joined #perl6-dev
05:33 pyrimidine joined #perl6-dev
05:59 MasterDuke how do i find if a QAST::Var has a value (during optimize time, not run time)?
06:34 pyrimidine joined #perl6-dev
06:50 RabidGravy joined #perl6-dev
07:04 agentzh joined #perl6-dev
07:08 llfourn joined #perl6-dev
07:31 AlexDaniel joined #perl6-dev
07:51 nine ugexe: that's a staging repo. It's meant for packaging, i.e. the generated files would be copied into another, existing repository. We delete the staging repo's version file so the version file of the target repo does not get overwritten.
07:52 nine ugexe: Also so that not every module package (e.g. rpm) contains the same version file as that would create file conflicts on installation.
08:09 llfourn joined #perl6-dev
09:08 llfourn joined #perl6-dev
09:09 lizmat IOninja: re Seekxxx, lack of imagination I guess
09:10 lizmat I though the names would be better than 0, 1, 2  which they were before that
09:10 lizmat *thought
09:10 Geth ¦ rakudo/nom: e270a15beb | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
09:10 Geth ¦ rakudo/nom: Make sure we can Mu xx *
09:10 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e270a15beb
09:12 agentzh joined #perl6-dev
09:12 Geth ¦ rakudo/nom: 1811b80dc0 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
09:12 Geth ¦ rakudo/nom: Introducing R:I.OneValueTimes
09:12 Geth ¦ rakudo/nom:
09:12 Geth ¦ rakudo/nom: The future foo xx 42 workhorse.  However, since turning foo xx 42 into
09:12 Geth ¦ rakudo/nom: a Seq currently breaks >>xx<< , we can't yet actually put it into production.
09:12 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1811b80dc0
09:13 nine How often does one use seek anyway? It's not like any other instruction will be a seek. Though I have to admit that named arguments make a lot of sense there :)
10:09 llfourn joined #perl6-dev
10:33 llfourn joined #perl6-dev
10:51 |Tux| This is Rakudo version 2017.02-44-g1811b80dc built on MoarVM version 2017.02-9-gc5379702
10:51 |Tux| csv-ip5xs        2.845
10:51 |Tux| test            12.635
10:51 |Tux| test-t           4.895 - 5.479
10:51 |Tux| csv-parser      12.938
11:14 timotimo wow, that's quite a bit of variance
12:21 llfourn joined #perl6-dev
12:33 pyrimidine joined #perl6-dev
12:46 lizmat m: dd 1 xx 3
12:46 camelia rakudo-moar 1811b8: OUTPUT: «(1, 1, 1)␤»
12:47 lizmat m: dd 1 >>xx<< 3
12:47 camelia rakudo-moar 1811b8: OUTPUT: «(1, 1, 1)␤»
12:47 lizmat m: dd 1 Z 3
12:47 camelia rakudo-moar 1811b8: OUTPUT: «((1, 3),).Seq␤»
12:47 lizmat m: dd 1 >>Z<< 3  # huh ?
12:47 camelia rakudo-moar 1811b8: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>␤Missing << or >>␤at <tmp>:1␤------> 3dd 1 >>Z<7⏏5< 3  # huh ?␤    expecting any of:␤        infix␤        infix stopper␤»
12:48 jnthn hehe, I got bit by that yesterday
12:48 jnthn First clue: look where it was when it didn't get the << it wanted
12:48 timotimo yeah, it's trying to have Z< as the op
12:49 timotimo m: (1, 2, 3) Z< (9, 2, 1)
12:49 jnthn Right. :-) Z is a meta-op, and by LTM it gets the <
12:49 camelia rakudo-moar 1811b8: OUTPUT: «Potential difficulties:␤    Useless use of Z< in sink context␤    at <tmp>:1␤    ------> 3(1, 2, 3) 7⏏5Z< (9, 2, 1)␤»
12:49 timotimo m: say (1, 2, 3) Z< (9, 2, 1)
12:49 camelia rakudo-moar 1811b8: OUTPUT: «(True False False)␤»
12:49 timotimo yeah, '<' is longer than ''
12:49 jnthn Aye :)
12:49 jnthn And then one-pass -parsing means we commit to it :)
12:59 MasterDuke if i have a QAST::Var in Optimize.nqp, how can i tell if it has a compile-time value (in my test case i know it does, but .has-compile-time-value is always 0)?
13:01 MasterDuke find_lexical looked promising, but didn't work either
13:02 timotimo i think .has_compiletime_value exists?
13:02 timotimo maybe has_compile_time_value
13:03 MasterDuke yeah, but it's always 0
13:03 IOninja m: dd 1 >>[Z]<< 3
13:03 camelia rakudo-moar 1811b8: OUTPUT: «((1, 3),).Seq␤»
13:03 timotimo oh
13:03 jnthn MasterDuke: When would this occur?
13:04 jnthn A QAST::Var represents a variable
13:05 MasterDuke jnthn: well, i'm testing with this `my $a = 0; loop (my $abc = 0; $abc <= 10000000; $abc += 5) { }; say $a`. and looking to see if $abc has (had?) a compile time value at the += 5 point
13:07 jnthn Well, has_compile_time_value being 0 there is right, 'cus it doesn't
13:07 MasterDuke heh. and i don't see a had_compile_time_value
13:08 jnthn I don't really understand that notion.
13:08 timotimo since you're already in that place, you could see if you can get the value of infix:<+>() at optimize-time
13:09 timotimo and also, if you can figure out if the variable is native in which case it can't be undefined
13:09 MasterDuke jnthn: this is in regards to $abc += 5 being much slower than $abc = $abc + 5
13:10 MasterDuke they optimize to similar code, but the += has a `if p6definite` added. and `call` vs `callstatic` (but i think i've figured that one out)
13:10 timotimo oh yeah, jnthn, did you see that? 2 seconds to do it with native ints and a = a + 5, but almost 250 seconds to do it with +=
13:11 MasterDuke i was surprised by the time difference between $a+=5 and $a=$a+5, a profile is kind of interesting. += is 25% spesh, 75% jit, 6000262 frames entered (1999795 eliminated by in-lining). = + is 100% jit, 671 frames entered(5999385 eliminated by in-lining)
13:12 MasterDuke for `my $a = 0; loop (my $b = 0; $b <= 10000000; $b+=5) { $a+=$b }; say $a` vs `my $a = 0; loop (my $b = 0; $b <= 10000000; $b=$b+5) { $a=$a+$b }; say $a`
13:13 agentzh joined #perl6-dev
13:14 jnthn I wonder if the itme diff is largely down to call vs callstatic?
13:14 jnthn *time
13:14 jnthn That's the difference between inlining and not
13:15 MasterDuke i think that was most of it
13:16 jnthn But I guess what you're really asking is if there's a way to find out if the variable is always assigned a definite value for its lifetime
13:16 jnthn And that's a data flow analysis question
13:17 timotimo aye, there could be $b = Any inside the loop body
13:17 MasterDuke jnthn: pretty much. looking here: https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Optimizer.nqp#L1647
13:17 jnthn Right, or it could escape to an rw sub :)
13:17 timotimo yup
13:17 jnthn We can't afford to do that kind of stuff in Perl6::Optimizer, really
13:18 jnthn It's much more in the realm of stuff spesh could do at some point
13:18 jnthn Perl6::Optimizer generally needs to be cheap, though.
13:18 timotimo spesh really needs to be fixed so that it can also run optimize_bb over the bbs it inlines ... :\
13:20 jnthn Once I'm done with race/hyper, and rewriting ThreadPoolScheduler, spesh will probably be my focus again.
13:20 jnthn It'll also probably change quite a lot
13:20 MasterDuke well, what i've done so far is copy these lines https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Optimizer.nqp#L1560-L1563 to right before 1647
13:21 MasterDuke and make those :op('call') depend on the result
13:21 MasterDuke which does turn the 'call' from += in my test into 'callstatic' and passes spectest
13:22 jnthn That sounds reasonable
13:23 MasterDuke k, i'll PR that
13:33 MasterDuke argh, i was wrong. call vs callstatic alone is almost no difference in time
13:35 MasterDuke this has the --target=optimize output of += vs = +, and the diff: https://gist.github.com/MasterDuke17/e966543ed7d491f8f9fb210324d23c14
13:37 MasterDuke hm, well there is a little savings
13:46 timotimo well, the call is only executed once
13:47 timotimo wait, am i reading that correctly
13:47 timotimo which call is the non-static one before your patch?
13:47 MasterDuke i should be inside the loop, right?
13:47 MasterDuke *it
13:48 MasterDuke the `&infix:<+>`
13:48 timotimo there's two &infix:<+> there
13:49 MasterDuke and after my patch they're all callstatic
13:50 MasterDuke vs all call before
13:51 MasterDuke seems to be ~5% faster
13:53 MasterDuke it's a little faster, but nothing more is inlined
13:53 MasterDuke so still 6000262 frames vs 671
13:54 MasterDuke so += is ~5% faster after my patch, but still way off of = +
14:12 Geth ¦ rakudo: MasterDuke17++ created pull request #1022: Optimize &METAOP_ASSIGN a bit
14:12 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1022
14:26 MasterDuke if i change the body of `my $a = 0; loop (my $b = 0; $b <= 10000000; $b=$b+5) { $a=$a+$b }; say $a` to `{ $a=$a+$b; if rand < 0.5 { $a = Any} }` shouldn't the fact that $a could be Any cause the same code to be genned as for $a += $b?
14:26 MasterDuke i.e., an `if p6definite` added into the loop
14:26 committable6 joined #perl6-dev
14:28 Geth ¦ roast/#130712-test: a2406c076b | Altai-man++ | integration/error-reporting.t
14:28 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
14:28 Geth ¦ roast/#130712-test: Test to cover RT #130712
14:28 Geth ¦ roast/#130712-test: review: https://github.com/perl6/roast/commit/a2406c076b
14:28 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
14:28 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
14:28 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
14:29 Geth ¦ roast: Altai-man++ created pull request #244: Test to cover RT #130712
14:29 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
14:29 Geth ¦ roast: review: https://github.com/perl6/roast/pull/244
14:30 IOninja ...stupid robot
14:43 timotimo MasterDuke: no, it's just that += has that semantic that it has to account for
14:43 timotimo for Any + $b we rely on + being able to cope with one argument being undefined
14:43 timotimo for += we rely on a no-arg meaning instead
14:45 MasterDuke ah, makes sense
14:47 MasterDuke then is there a way to make += the same as = + without solving the data flow analysis question?
14:59 Geth ¦ rakudo: Altai-man++ created pull request #1023: Test to cover RT #130712
14:59 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
14:59 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1023
15:00 Geth ¦ rakudo/nom: 664f767c76 | Altai-man++ | t/05-messages/01-errors.t
15:00 Geth ¦ rakudo/nom: Test to cover RT #130712
15:00 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/664f767c76
15:00 Geth ¦ rakudo/nom: a4816482c6 | (Zoffix Znet)++ | t/05-messages/01-errors.t
15:00 Geth ¦ rakudo/nom: Merge pull request #1023 from Altai-man/#130712-test
15:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
15:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
15:00 Geth ¦ rakudo/nom:
15:00 Geth ¦ rakudo/nom: Test to cover RT #130712
15:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
15:00 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a4816482c6
15:06 IOninja synopsebot6: any idea what the link is for RT#130712? I can't find it nowhere.
15:06 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130712
15:06 IOninja heh... dumbass...
15:12 timotimo MasterDuke: i wonder if the call to infix + wont get inlined because the return type of the no-arg call is unknown
15:13 timotimo perhaps we can reorder optimizations such zhat the no-arg call can be compile time evaluated
15:13 timotimo and that might cause the outer.+ to become inlined
15:13 Geth ¦ rakudo: bduggan++ created pull request #1024: little typo
15:13 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1024
15:14 timotimo might just have to visit_children afterdoing the metaop assign optimization
15:14 timotimo the one we alread have
15:14 MasterDuke timotimo: interesting, i'll experiment
15:15 timotimo hope theres something to gain there
15:16 timotimo though one could expect spesh to inline here also
15:16 Geth ¦ rakudo/nom: d66c382308 | (Brian Duggan)++ | src/Perl6/World.nqp
15:16 Geth ¦ rakudo/nom: "an Map" -> "a Map"
15:16 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d66c382308
15:16 Geth ¦ rakudo/nom: c550dd7004 | (Zoffix Znet)++ | src/Perl6/World.nqp
15:16 Geth ¦ rakudo/nom: Merge pull request #1024 from bduggan/a_instead_of_an
15:16 Geth ¦ rakudo/nom:
15:16 Geth ¦ rakudo/nom: little typo
15:16 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c550dd7004
15:16 timotimo it would be nice to have a more easy to analyze output from spesh to tell us what frames were inlined
15:17 timotimo could probably put that below the output of the callsite info
15:34 pyrimidine joined #perl6-dev
15:35 MasterDuke timotimo: tried adding self.visit_children after https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Optimizer.nqp#L1646 and after https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Optimizer.nqp#L1663, but didn't do anything
15:41 timotimo crap.
15:44 timotimo i wish it'd be easier to figure out what the optimizer thinks
15:44 timotimo but at the same time not be exposed to the firehose you'd get if it outputted stuff everywhere
15:45 MasterDuke yeah, i've tried adding some debug stuff to the optimizer and it's noisy
15:48 timotimo yeah, very
15:48 timotimo i mean, you can invent an optimization level 5 or something
15:48 timotimo since the setting uses 4, you can get through a compile without it spamming too much
15:48 timotimo but that's not the real worry anyway
15:50 MasterDuke i did something like `if $op[0].name eq '$my-made-up-name' { note('stuff') }`, which sort of works
15:52 pyrimidine joined #perl6-dev
15:56 timotimo oh
15:56 llfourn joined #perl6-dev
16:02 MasterDuke timotimo: got any other ideas to try out?
16:03 timotimo well, we still could do the thing where we detect that the variable in question is a native
16:04 timotimo but that only helps the int $foo case, not the Int $foo case.
16:07 MasterDuke it does already do things like assign_i in that case, lexcalref instead of lexical, and remove the if p6definite for the += constant
16:07 timotimo oh
16:07 timotimo damn
16:07 timotimo well, lexicalref still allocates an object
16:08 timotimo just to throw it away again at the soonest opportunity
16:08 MasterDuke what should it be instead?
16:12 timotimo do you know what part of the code does that specific thing?
16:14 MasterDuke not sure what you mean?
16:14 timotimo what part decides to use lexicalref
16:15 MasterDuke `QAST::Var(lexical $abc) <wanted> $abc` vs `QAST::Var(lexicalref $abc) <wanted> $abc`
16:17 MasterDuke for `my $a = 0; loop (my int $abc = 0; $abc <= 10000000; $abc += 5) { $a += $abc }; say $a`
16:21 committable6 joined #perl6-dev
16:22 committable6 joined #perl6-dev
16:28 IOninja m: my $x = 42; $x and= say "hi"
16:28 camelia rakudo-moar c550dd: OUTPUT: «hi␤»
16:28 IOninja m: my $x = 42; $x or= say "hi"
16:28 camelia rakudo-moar c550dd: OUTPUT: «hi␤»
16:28 IOninja m: my $x; $x and= say "hi"
16:28 camelia rakudo-moar c550dd: OUTPUT: «hi␤»
16:28 IOninja bug
16:28 IOninja will fix shortly
16:31 Geth ¦ rakudo/nom: 829762ab5a | (Daniel Green)++ | src/Perl6/Optimizer.nqp
16:31 Geth ¦ rakudo/nom: `callstatic` the metaop if possible
16:31 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/829762ab5a
16:31 Geth ¦ rakudo/nom: 2bf2834a3e | lizmat++ | src/Perl6/Optimizer.nqp
16:31 Geth ¦ rakudo/nom: Merge pull request #1022 from MasterDuke17/optimize_metaopassign_a_bit
16:31 Geth ¦ rakudo/nom:
16:31 Geth ¦ rakudo/nom: Optimize &METAOP_ASSIGN a bit
16:31 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2bf2834a3e
16:35 pyrimidine joined #perl6-dev
16:36 MasterDuke lizmat++ also, any further thoughts on https://github.com/rakudo/rakudo/pull/1021?
16:38 lizmat MasterDuke: feels to me that the checks like "$chars > ($?BITS == 64 ?? 16 !! 9)" could be put into a constant / compile time set lexical like $?BITS
16:39 lizmat my $?DECINT-OVERFLOW = $?BITS == 64 ?? 16 !! 9;
16:39 lizmat and then $chars > $?DECINT-OVERFLOW
16:39 MasterDuke lizmat: i thought about that, wasn't sure how much to pollute global space
16:39 lizmat or is the optimizer smart enough to catch that?
16:40 MasterDuke i'll test it
16:40 lizmat if the optimizer is smart enough to catch that, then we don't need to do anything
16:40 lizmat :-)
16:40 ggoebel joined #perl6-dev
16:40 lizmat other than that, I have no real thoughts about the PR
16:41 lizmat afk again&
16:43 Geth ¦ rakudo/nom: 5e6f30a7a3 | (Zoffix Znet)++ | src/Perl6/Actions.nqp
16:43 Geth ¦ rakudo/nom: Fix broken thunking of infix:<notandthen>
16:43 Geth ¦ rakudo/nom:
16:43 Geth ¦ rakudo/nom: `42 notandthen say "hi"` should not produce any output, but it does.
16:43 Geth ¦ rakudo/nom:
16:43 Geth ¦ rakudo/nom: Fix by adding it to the list of ops in the actions for which thunk
16:43 Geth ¦ rakudo/nom: is processed. This does not fix the `notandthen=` case, which will
16:43 Geth ¦ rakudo/nom: be addressed in a later commit.
16:43 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5e6f30a7a3
16:44 Geth ¦ roast: 4487be9c9f | (Zoffix Znet)++ | S03-operators/notandthen.t
16:44 Geth ¦ roast: Test infix:<notandthen> thunks
16:44 Geth ¦ roast:
16:44 Geth ¦ roast: Rakudo fix: https://github.com/rakudo/rakudo/commit/5e6f30a7a3
16:44 Geth ¦ roast: review: https://github.com/perl6/roast/commit/4487be9c9f
16:45 Geth ¦ rakudo/nom: e0a9cf62c8 | (Zoffix Znet)++ | t/spectest.data
16:45 Geth ¦ rakudo/nom: Add S03-operators/notandthen.t to list of testfiles to run
16:45 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e0a9cf62c8
16:57 llfourn joined #perl6-dev
17:00 IOninja Trying to find a good place to stick `and=` and `or=` tests... any idea?
17:02 MasterDuke maybe some new files in ./S03-metaops?
17:02 Geth ¦ roast: 808baa47f0 | (Zoffix Znet)++ | S03-operators/assign.t
17:02 Geth ¦ roast: Remove executable bit on the file
17:02 Geth ¦ roast: review: https://github.com/perl6/roast/commit/808baa47f0
17:03 IOninja I was gonna stick it into the same file where normal `and`/`or` are tested, but it's impossible to find.... :/
17:05 IOninja oh what a coincidicense. ^ that file got some `and=` tests in it
17:05 IOninja Gonna stick mine up in there.,
17:06 AlexDaniel joined #perl6-dev
17:19 committable6 joined #perl6-dev
17:21 Geth ¦ rakudo/nom: 3e88c41c51 | (Zoffix Znet)++ | 2 files
17:21 Geth ¦ rakudo/nom: Fix failure to thunk RHS on or=, and=, and notandthen=
17:21 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3e88c41c51
17:22 Geth ¦ roast: 8c75750f7a | (Zoffix Znet)++ | S03-operators/assign.t
17:22 Geth ¦ roast: Test or=, and=, andthen=, notandthen=, and orelse= thunk RHS
17:22 Geth ¦ roast:
17:22 Geth ¦ roast: The or=, and=, and notandthen= were broken and fixed in Rakudo in:
17:22 Geth ¦ roast: https://github.com/rakudo/rakudo/commit/3e88c41c51
17:22 Geth ¦ roast: review: https://github.com/perl6/roast/commit/8c75750f7a
17:26 pyrimidine joined #perl6-dev
17:33 pyrimidine joined #perl6-dev
17:42 MasterDuke lizmat, et al: i tried pulling those checks out into lexicals and measured no difference
17:50 agentzh joined #perl6-dev
17:53 pyrimidine joined #perl6-dev
17:58 llfourn joined #perl6-dev
18:04 llfourn joined #perl6-dev
18:46 Geth ¦ rakudo/nom: 9e8ecb7bac | (Zoffix Znet)++ | 2 files
18:46 Geth ¦ rakudo/nom: Fix precision loss with `cmp` involving Rationals/Int
18:46 Geth ¦ rakudo/nom:
18:46 Geth ¦ rakudo/nom: - Don't convert to .Num in Rational, Rational candidate,
18:46 Geth ¦ rakudo/nom:     use `<=>` comparator instead. We still have to check for NaNs
18:46 Geth ¦ rakudo/nom:     and .Num `cmp` .Num in that case, since <=> returns Nil for NaNs
18:46 Geth ¦ rakudo/nom: - Add Rational, Int and Int, Rational candidate that does same as
18:46 Geth ¦ rakudo/nom:     Rational, Rational candidate, so we don't .Num the Rational
18:46 Geth ¦ rakudo/nom:     in those cases, losing precision.
18:46 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9e8ecb7bac
18:47 Geth ¦ roast: 31d9af3884 | (Zoffix Znet)++ | S03-operators/cmp.t
18:47 Geth ¦ roast: Test infix:<cmp> with Rational and Int does not lose precision
18:47 Geth ¦ roast:
18:47 Geth ¦ roast: Rakudo fix: https://github.com/rakudo/rakudo/commit/9e8ecb7bac
18:47 Geth ¦ roast: review: https://github.com/perl6/roast/commit/31d9af3884
18:50 timotimo TYVM IOninja
18:50 IOninja any time
18:51 timotimo one time
18:51 timotimo all time
18:51 timotimo none time
18:51 MasterDuke burger time
18:57 b2gills Hammer Time!
19:03 lizmat is it easter yet ?
19:04 IOninja Nope, Apr 16s
19:05 llfourn joined #perl6-dev
19:07 IOninja m: say Date.new('2017-04-16') - Date.today
19:07 camelia rakudo-moar 9e8ecb: OUTPUT: «52␤»
19:07 IOninja :D
19:27 IOninja .ask nine should we move away from sha1 for modules; RE: https://shattered.io/ ? Looks like we can even mod our sha1 with the collision detector thing: https://github.com/cr-marcstevens/sha1collisiondetection not sure what the performance impact is tho
19:27 yoleaux2 IOninja: I'll pass your message to nine.
19:34 perlpilot even if we don't move away from SHA1 right away, we should at least be aware of making "not hard" if we can  (For git, it's apparently hard)
19:34 jnthn What's the actual risk vector?
19:34 lizmat that someone could make a precomp module that contains different code from what was expected
19:35 jnthn Um, but the SHA-1 is of the source, not the bytecode
19:35 jnthn And we don't recompile the source to verify it
19:35 IOninja That you install a module that replaces another module.
19:35 gfldex we don't use SHA-1 to ensure security
19:36 jnthn Right, but if you can trick somebody into installing your malicious module then you've already got them, no SHA-1 vuln needed.
19:36 gfldex that's a topic for package managers of distros
19:37 gfldex jnthn: see https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html
19:38 gfldex using sha-256 would make hash collisions less likely tho, so it's not a terrible bad move to start with
19:38 gfldex also, havin sha-* in CORE expose to users would be nice
19:38 perlpilot note how many SHA1 computations it took for them to find a collision
19:39 jnthn I'm not disputing that the SHA-1 vuln is real, just noting that it needs considering in context.
19:39 IOninja jnthn: but if we assume you can replace another module with this attack, then the parrallel is inexact. User A can install a malicious module and an app that *does not use it* would execute it
19:39 lizmat agree it's not something we need to fix before the next release  :-)
19:40 IOninja Also, IMO there's a public image here at play: "Perl 6 uses SHA-1. Look, there's this website that says SHA-1 is bad"... This is enough to set a perception in users' minds regardless of how easy or practical that attack is to execute.
19:41 MasterDuke jnthn: is now a good time to bug you about Binder.java?
19:41 perlpilot But!  It could affect https://github.com/perl6/book  ;-)   People could be tricked into reading about some Perl 6 that doesn't exist!
19:41 IOninja hehe
19:43 jnthn fwiw, I was under the impression we were heading towards punycode-ing the distribution longname anyway to fix stuff for folks who are unhappy about not being able to `locate`
19:43 IOninja Ah.
19:43 IOninja I don't follow or know anything about the Comp::Unit::* part of the codebase
19:44 jnthn At which point even if we SHA-1 within a distro, they're still "namespaced" under the distribution name.
19:44 jnthn I try not to these days also
19:44 jnthn MasterDuke: Well, should go for a walk soon, but pointer me at what you'd like me to look at :)
19:44 jnthn *point
19:45 jnthn Well, I don't mind knowing stuff about Comp::Unit::. But there's so many *other* things that I need to worry about, and @other are doing a nice job caring for it, so... :-)
19:46 jnthn MasterDuke: Is it about https://github.com/rakudo/rakudo/pull/1018 ?
19:46 MasterDuke i've updated https://github.com/rakudo/rakudo/pull/1018. it now builds for the JVM, and ./perl6-j -e 'say "hi"' runs fine, but a `make install` fails and i can't run the spectests. here's a gist of the output i get https://gist.github.com/MasterDuke1​7/2c8fbc294f3c9defcf370de046af1331.
19:47 jnthn And it works fine without your changes?
19:47 MasterDuke yeah
19:47 jnthn I get a 404 on that gist URL?
19:48 MasterDuke https://gist.github.com/MasterDuke17/2c8fbc294f3c9defcf370de046af1331
19:48 jnthn that worked
19:48 jnthn Even though they look the same to me :)
19:48 MasterDuke weird, there's a %u200B in the first one when i hover over
19:49 MasterDuke between the 1 and the 7
19:49 jnthn odd
19:49 MasterDuke and i just copied it from irclog.perlgeek.de
19:49 jnthn Hm, what's that envvar called where you get the full JVM stacktrace...
19:50 jnthn Ah, right. Can you try it with NQP_VERBOSE_EXCEPTIONS=1
19:50 jnthn That should show us where in the binder (I presume it's in the binder) that it's exploding
19:50 jnthn It spits stuff out for all exceptions, even handled ones, so it'll be a bit noisy
19:50 jnthn But the one we want should be final or near final
19:51 MasterDuke gist updated
19:53 jnthn Indentation confusation :)
19:54 jnthn The error[0] assignment is not covered by the if
19:54 jnthn After thechanges
19:54 jnthn Need braces
19:54 jnthn Totally missed that first time I read the code :)
19:54 MasterDuke argh!!
19:55 pyrimidine joined #perl6-dev
19:55 jnthn :)
19:55 jnthn walk &
19:55 MasterDuke jnthn++
20:06 llfourn joined #perl6-dev
20:37 ggoebel joined #perl6-dev
20:39 timotimo i didn't even know that env var!
21:08 IOninja .ask jnthn Num.Rat coerser takes optional epsilon, Int.Rat and Rat.Rat take an optional arg they ignore, and Complex.Rat and Str.Rat don't take any args. Does it make more sense to make all .Rats take an optional arg and ignore it in cases or just have it for types that can make use of it? I'm leaning towards the latter, and removing dummy params
21:08 yoleaux2 IOninja: I'll pass your message to jnthn.
21:09 IOninja same applies to .FatRat
21:10 llfourn joined #perl6-dev
21:32 robertle joined #perl6-dev
21:56 pyrimidine joined #perl6-dev
22:01 pyrimidine joined #perl6-dev
22:09 pyrimidine joined #perl6-dev
22:12 llfourn joined #perl6-dev
22:48 Geth ¦ rakudo/nom: 320c2fb464 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
22:48 Geth ¦ rakudo/nom: R:I.Batch|Rotor take an iterator
22:48 Geth ¦ rakudo/nom:
22:48 Geth ¦ rakudo/nom: This is merely changing the name of the parameter, for clarity
22:48 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/320c2fb464
23:03 gfldex m: class C { has $.a = 42 }; say C.new.a
23:03 camelia rakudo-moar 9e8ecb: OUTPUT: «42␤»
23:03 gfldex when or by what are initialisers executed?
23:03 gfldex m: class C { has $.a = 42 }; say C.CREATE.a
23:03 camelia rakudo-moar 9e8ecb: OUTPUT: «(Any)␤»
23:03 timotimo part of the BUILD process
23:04 timotimo it  gets an entry in the BUILDALLPLAN
23:04 timotimo see Mu.pm6
23:13 llfourn joined #perl6-dev
23:20 lizmat m: say IterationBuffer ~~ List
23:20 camelia rakudo-moar 320c2f: OUTPUT: «False␤»
23:20 lizmat *phew*   :-)
23:22 Geth joined #perl6-dev
23:23 Geth ¦ geth: 08a8e6925c | (Zoffix Znet)++ | lib/Geth/GitHub/Hooks.pm6
23:23 Geth ¦ geth: Do not assume 2nd line of commit message is blank
23:23 Geth ¦ geth: review: https://github.com/perl6/geth/commit/08a8e6925c

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