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. |