MasterDuke_ i spoke to soon. trying to build rakudo with that method removed nearly killed my box and the oom killer took out firefox 03:38
*too
huh, and did i misstype my password? it won't let me /nick to MasterDuke, it says it's already in use 03:40
[Tux] This is Rakudo version 2017.02-55-g320c2fb46 built on MoarVM version 2017.02-9-gc5379702 07:29
csv-ip5xs 2.890
test 12.664
test-t 4.823 - 5.004
csv-parser 13.261
lizmat Files=1177, Tests=55938, 188 wallclock secs (11.31 usr 4.49 sys + 1123.82 cusr 105.84 csys = 1245.46 CPU) 08:50
marc.info/?l=git&m=148787047422954 # probably also interesting wrt our use of sha1 in compunit repos 08:56
samcv thanks lizmat 09:16
lizmat, this isn't as much an issue as like perl 5 having ./ in @INC right? 09:18
since you'd basically need write access to these locations anyway to exploit it 09:22
Geth star: cschwenz++ created pull request #86:
Revert copyright year in LICENSE to original.
09:39
lizmat samcv: indeed 11:24
Geth star: f78a2c06c1 | (Calvin Schwenzfeier)++ | LICENSE
Revert copyright year in LICENSE to original.

Per the commit message on the Rakudo LICENSE file[^1] and the source text for the original license[^2][^3], "Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed."
  [1] github.com/rakudo/rakudo/commit/47...7bd4600be7
  [2] www.perlfoundation.org/artistic_license_2_0
  [3] opensource.org/licenses/Artistic-2.0
11:25
star: 70da757d7c | lizmat++ | LICENSE
Merge pull request #86 from cschwenz/master

Revert copyright year in LICENSE to original.
MasterDuke_ if there aren't any further thoughts/comments, would anybody mind merging github.com/rakudo/rakudo/pull/1021 and github.com/rakudo/rakudo/pull/1018 (and maybe squashing 1018 so there aren't commits that break the jvm build)? 13:21
Geth rakudo/nom: 25a3cc54b1 | (Daniel Green)++ | src/Perl6/Actions.nqp
Optimize Actions.(dec|hex|oct|bin)int()

Create a string_to_int that uses nqp::radix instead of nqp::radix_I. Then call that from Actions.(dec|hex|oct|bin)int() instead of string_to_bigint when the number of chars in the string to be converted is small enough that it couldn't cause overflow.
13:22
rakudo/nom: b61b3c7a7f | (Daniel Green)++ | src/Perl6/Actions.nqp
Use string_to_int for longer strings when 64-bit
rakudo/nom: d41b68e16c | lizmat++ | src/Perl6/Actions.nqp
Merge pull request #1021 from MasterDuke17/optimize_string_to_bigint

Optimize Actions.(dec|hex|oct|bin)int()
lizmat MasterDuke_: re 1018, what would be the effect on the JVM build? 13:23
MasterDuke_ lizmat++ the first commit breaks it, the next unbusts building, but has an error so it won't really run correctly, the last commit fixes running also 13:32
IOninja s: CORE::.keys.grep(* ne "IterationEnd").map({CORE::{$_}}).grep({ !.DEFINITE and try .can("say") }), 'unique', \() 13:42
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/320c...s.pm#L1487
IOninja bisectable6: Scalar.unique 13:58
bisectable6 IOninja, On both starting points (old=2015.12 new=d41b68e) the exit code is 0, exit signal is 11 (SIGSEGV) and the output is identical as well
IOninja, Output on both points:
IOninja c: 2014.01 Scalar.unique
committable6 IOninja, Ā¦Ā«2014.01Ā»: Cannot invoke null objectā¤ in block at /tmp/vrw4a_2gQY:1ā¤ Ā«exit code = 1Ā»
IOninja c: 2015.01 Scalar.unique
committable6 IOninja, Ā¦Ā«2015.01Ā»:
IOninja c: 2015.07 Scalar.unique
committable6 IOninja, Ā¦Ā«2015.07Ā»:
IOninja c: all Scalar.unique 13:59
committable6 IOninja, gist.github.com/769828254057438050...a953f9041b
Geth rakudo: MasterDuke17++ created pull request #1025:
Check that the argument to p6recont_ro IS_CONCRETE
16:40
IOninja Doesn't that make p6recont_ro a NOP for all type objects? 16:42
oh, it's just the container's concretness that's tested... 16:43
IOninja wonders what happened to IS_WOOD, IS_STEEL, and IS_PAPER 16:46
dogbert17 IOninja; have you tried the mapper program with MasterDuke's fix? 17:36
Geth rakudo/nom: cfe0e04622 | (Daniel Green)++ | src/vm/moar/ops/perl6_ops.c
Check that the argument to p6recont_ro IS_CONCRETE
17:41
rakudo/nom: ae2c1dadf0 | lizmat++ | src/vm/moar/ops/perl6_ops.c
Merge pull request #1025 from MasterDuke17/fix_segv_in_p6recont_ro

Fix SEGV in nqp::p6recont_ro
IOninja dogbert17: no, but I imagine it fixes it. 17:45
MasterDuke lizmat++ also, need any other info for github.com/rakudo/rakudo/pull/1018? 17:52
Geth rakudo/nom: 4 commits pushed by (Daniel Green)++, lizmat++ 17:53
lizmat no :-)
MasterDuke lizmat++ 17:55
Geth rakudo/nom: 45b3af8dc2 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm
Make MERGESORT also take IterationBuffers directly
18:21
rakudo/nom: 7010ae9bbe | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Make R:I.ReifiedList take IterationBuffers directly
MasterDuke lizmat: is there an easy way to call/use MERGESORT directly? 18:29
lizmat in the setting, it's just Rakudo::Internals.MERGESORT...() 18:30
MasterDuke: but why ?
MasterDuke lizmat: i thought i noticed some weirdness (seemed slower than i expected), but that was in a very large script and i wasn't sure what under the hood was using it 18:31
so i was just going to try it with some random input and time it 18:32
lizmat MasterDuke: by all means... :-)
it now directly takes IterationBuffers :-)
still returns a List though, baby steps :-)
MasterDuke lizmat: turns out a graph of Rakudo::Internals.MERGESORT-REIFIED-LIST performance has the same shape as Perl 5's sort, it's just the individual values are 15-20x higher 19:20
lizmat yeah... not unsurprising, as that is same order of magnitude between Text::CSV_PP in Perl 5 and Text::CSV in Perl 6 19:22
Geth roast: e31c78c52b | (Zoffix Znet)++ | S32-list/unique.t
Test Scalar.unique does not SEGV

RT#130852: rt.perl.org/Ticket/Display.html?id=130852 Rakudo fix: github.com/rakudo/rakudo/commit/ae2c1dadf0
19:23
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130852
IOninja ZOFVM: Files=1226, Tests=132875, 220 wallclock secs (25.02 usr 3.88 sys + 4621.42 cusr 310.74 csys = 4961.06 CPU)
MasterDuke IOninja: i don't understand eval-lives-ok. on a perl6 build before my patch, `perl6 -e 'use Test; eval-lives-ok ļ½¢Scalar.uniqueļ½£'` segfaults 19:25
IOninja sure, 'cause the bug is still in there. 19:28
You'd need to use `is_run` to make it fail just that test and not crash the test file.
why didn't I use lives-ok { Scalar.unique } ? Ignorance and paranoia. I don't know what sort of optimizations we do or will do that won't turn that into some optimized version that doesn't hit the bug. Maybe the same would happen with the eval-lives-ok version, I've no idea. 19:30
...also ļ½¢...ļ½£ looks cool 19:31
MasterDuke i find it mildly annoying that roast doesn't have a RAKUDO_REVISION. if i'm working on something in a branch and a bunch of roast tests go in there are likely to be failures, and i have to figure out whether they are because of my changes or not 19:33
Geth rakudo/nom: 556db9d7bc | (Elizabeth Mattijsen)++ | src/core/Array.pm
Make Array.splice use IterationBuffer internally
19:36
rakudo/nom: 9e9a4ad250 | (Elizabeth Mattijsen)++ | src/core/Baggy.pm
Re-imagine Baggy!LISTIFY

Make it return a ready made Str. This allows using native strs internally, and thereby speed up things like Bag.perl|gist|Str.
Actually part of the nqp::list -> IterationBuffer hunt.
19:38
rakudo/nom: 8e8cd14bf4 | (Elizabeth Mattijsen)++ | src/core/Block.pm
Make sure Block.phasers returns List with IB
19:58
rakudo/nom: 7556498daa | (Elizabeth Mattijsen)++ | src/core/CompUnit/RepositoryRegistry.pm
Move some code out of a loop

Actually part of the nqp::list -> IB search
20:36
MasterDuke re github.com/rakudo/rakudo/pull/876, if i removed all the controversial/incorrect commits from that branch/PR, would anybody have a problem with merging it? 21:17
[Coke] .... by definition, probably not? :) 21:18
MasterDuke: coming in late: what is the purpose of the commit? 21:19
s/commit/PR/
MasterDuke --> Nil return constraints are good for performance
so i went through and added them everywhere i thought it made sense 21:20
timotimo OK 21:21
MasterDuke a couple were mistaken, but it's still a bunch of changes (though it did spectest clean at the time)
timotimo were you able to measure any change in performance for those?
MasterDuke nothing very noticeable
timotimo ok :( 21:22
MasterDuke though i like being explicit, so i would argue that alone is a benefit
timotimo fair enough
[Coke] if the performance increase isn't noticable, why do it? 21:23
so that leaves "making it explicit", which I would argue we don't care about in core. we want fast in core. 21:24
MasterDuke well, just because the difference isn't noticeable now doesn't mean it won't be more so in the future
lizmat right: afaik, --> Nil is not handled by the optimizer just yet 21:36
MasterDuke i know timotimo said it was faster, but maybe that was more in a theoretical way 21:37
benchable6: compare sub a() { my $a = rand; }; a() for ^5_000_000 ||| sub b(--> Nil) { my $a = rand; }; a() for ^5_000_000; 21:40
benchable6 MasterDuke, Ā¦Ā«subĀ»:Cannot find this revision
MasterDuke benchable6: compare HEAD sub a() { my $a = rand; }; a() for ^5_000_000 ||| sub b(--> Nil) { my $a = rand; }; a() for ^5_000_000; 21:41
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, Ā¦Ā«HEADĀ»:04===SORRY!04=== Error while compiling -eā¤Undeclared routine:ā¤ a used at line 1ā¤
MasterDuke benchable6: compare HEAD sub a() { my $a = rand; }; a() for ^5_000_000 ||| sub b(--> Nil) { my $a = rand; }; b() for ^5_000_000;
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, Ā¦Ā«HEADĀ»:Benchmark: ā¤Timing 10 iterations of 0, 1...ā¤Ā«timed out after 10 seconds, outputĀ»:
MasterDuke benchable6: compare HEAD sub a() { my $a = rand; }; a() for ^2_000_000 ||| sub b(--> Nil) { my $a = rand; }; b() for ^2_000_000; 21:42
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, Ā¦Ā«HEADĀ»:Benchmark: ā¤Timing 10 iterations of 0, 1...ā¤ 0: 8.2902 wallclock secs @ 1.2062/s (n=10)ā¤Ā«timed out after 10 seconds, outputĀ»:
[Coke] gah
MasterDuke benchable6: compare HEAD sub a() { my $a = rand; }; a() for ^1_000_000 ||| sub b(--> Nil) { my $a = rand; }; b() for ^1_000_000;
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, gist.github.com/aa7e16a86d05f1bf81...9931d5b9cf
lizmat MasterDuke: the github.com/rakudo/rakudo/pull/876 seems to have conflicts ?
MasterDuke lizmat: yeah, it's pretty old. i was wondering if i should go to the effort of fixing them and addressing the comments 21:44
lizmat I'll merge it if it's clean :-)
unless people have objections ? 21:45
MasterDuke [Coke], timotimo, lizmat: if you look at the benchable6 results (and i confirmed the same thing on my machine), the --> Nil version is slightly faster
but it does take a lot of iterations to notice it
lizmat: cool, i'll see about revamping it then 21:46
[Coke] defers to lizmat.
Geth rakudo/nom: adb6f87e88 | (Elizabeth Mattijsen)++ | src/core/control.pm
Make CLONE-HASH-DECONTAINERIZED a bit smarter

Also tried moving that to Rakudo::Internals, but as a method the result appears to always be HLLized, which sorta defeats the purpose.
21:47
[Coke] really dislikes the opcode name "iterval". :) 21:48
IOninja why?
[Coke] because it's "interval" spelled wrong (except it isn't)
IOninja ah :) 21:49
lizmat m: my %h = a => 42, b => 666; say %h.DUMP # this appears to be borked for a long time already 22:20
camelia Hash<1>(
:$!descriptor(Perl6::Metamodel::ContainerDescriptor<2>(...)),
:$!storage(BOOTHash<3>(...))
)
lizmat ah, it only looks borked :-) 22:22
[Coke] has apparently forgotten there was a .DUMP
is that the method form of dd? 22:23
lizmat no, this predates dd by a long shot: appears to be some debugging aid from way back 22:24
[Coke] kill it!
:)
lizmat is tempted 22:26
lizmat has some experience
Geth rakudo/nom: 3de7b087b4 | (Elizabeth Mattijsen)++ | src/core/Hash.pm
Streamline Hash.DUMP a bit

But it should probably be removed, as it looks like a very old debugging aid.
22:35
lizmat good night, #perl6-dev! 22:44
IOninja night
timotimo MasterDuke: i'm not actually sure i said anything about --> Nil being faster actually? :S 22:51
IOninja you did
timotimo oh 22:52
IOninja timotimo: irclog.perlgeek.de/perl6-dev/2016-...i_13184818
timotimo maybe we're clever about generating the right kind of return code when we have --> Nil
IOninja I think it bypasses the return type typecheck if it detects a Nil 22:53
timotimo cool
maybe i leaned a bit too far out of the window when i said "very good for performance"
IOninja m: sub foo () {$ = 42}; for ^2000000 { $ = foo }; say now - INIT now 22:54
camelia Cannot assign to an immutable value
in block <unit> at <tmp> line 1
IOninja wat?
oh, optimizer messes it up 22:55
m: sub foo () {42}; for ^2000000 { $ = foo }; say now - INIT now 22:58
camelia 1.036167
IOninja m: sub foo (-->Nil) {42}; for ^2000000 { $ = foo }; say now - INIT now
camelia WARNINGS for <tmp>:
Useless use of constant integer 42 in sink context (line 1)
1.2373463
IOninja m: sub foo (-->Nil) {$ = 42}; for ^2000000 { $ = foo }; say now - INIT now
camelia 1.23535806
IOninja m: sub foo (-->Nil) {$ = 42}; for ^2000000 { $ = foo }; say now - INIT now
camelia 1.2348875
IOninja m: sub foo (-->Nil) {$ = 42}; for ^2000000 { $ = foo }; say now - INIT now
camelia 1.317078601
IOninja m: sub foo () {42}; for ^2000000 { $ = foo }; say now - INIT now 22:59
camelia 0.9883682
IOninja m: sub foo () {42}; for ^2000000 { $ = foo }; say now - INIT now
camelia 0.9765939
IOninja shrugs
timotimo hm.