Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm Set by Zoffix on 27 July 2018. |
|||||||||||||||||||||||||||||||||||||||
00:56
fake_space_whale joined
01:17
Kaiepi left
01:18
Kaiepi joined
01:20
Kaiepi left,
Kaiepi joined
|
|||||||||||||||||||||||||||||||||||||||
fake_space_whale | When a bug is marked as "testneeded" for rakudo, are those supposed to be tests in rakudo/t for test in roast? | 01:25 | |||||||||||||||||||||||||||||||||||||
MasterDuke | fake_space_whale: usually roast | 01:29 | |||||||||||||||||||||||||||||||||||||
fake_space_whale | Thank you | ||||||||||||||||||||||||||||||||||||||
MasterDuke | if it's something about the text of an error message however, that would usually be in rakudo's t/ | 01:30 | |||||||||||||||||||||||||||||||||||||
fake_space_whale | ah, that makes sense | 01:32 | |||||||||||||||||||||||||||||||||||||
01:37
benjikun left
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | oh nice, now my int-as-default nqp passes all its tests | 01:40 | |||||||||||||||||||||||||||||||||||||
whoops, but rakudo segfaults before it even gets to the core setting | |||||||||||||||||||||||||||||||||||||||
wait, now it does, segv hopefully was just random | 01:42 | ||||||||||||||||||||||||||||||||||||||
02:49
|Tux| left
02:54
|Tux| joined
03:08
Kaiepi left
03:09
Kaiepi joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | roast: ribbon-otter++ created pull request #456: Add tests for #2143, Distribution::Resource.^mro |
03:19 | |||||||||||||||||||||||||||||||||||||
06:08
dct joined
06:15
diakopter left
06:16
fake_space_whale left
06:30
dct left
06:38
robertle joined
06:43
lizmat left
07:14
ufobat___ joined
08:06
lizmat joined
08:40
[TuxCM] joined
09:29
brrt joined
|
|||||||||||||||||||||||||||||||||||||||
brrt | Zoffix++ nice slides | 09:29 | |||||||||||||||||||||||||||||||||||||
regarding the speed-tips, slightly depressing slides as well | |||||||||||||||||||||||||||||||||||||||
Ulti | yeah the .123 vs .123e0 tips are something worth adding to an intro tutorial | 10:18 | |||||||||||||||||||||||||||||||||||||
Im actually optimising a bunch of python numeric code right now with a JIT compiling package called numba and I'm noticing I need to wrap floats in numpy.float64() all over the shop to get the most out of that too | 10:20 | ||||||||||||||||||||||||||||||||||||||
so its a general problem even outside of rats and floats | |||||||||||||||||||||||||||||||||||||||
10:24
robertle left
|
|||||||||||||||||||||||||||||||||||||||
Ulti | hmmm one thing in numba is you decorate a function to say its only going to be using the features that can be handled so simple numeric code etc. is it impossible in Perl 6 to add a trait to a sub/method to say all rats inside should actually be native doubles or something? | 10:26 | |||||||||||||||||||||||||||||||||||||
10:26
brrt left
|
|||||||||||||||||||||||||||||||||||||||
Ulti | sub optimised_thing is native_numeric {} | 10:27 | |||||||||||||||||||||||||||||||||||||
by impossible I mean in Perl 6 itself, is there any meta type operation to get at the variables and change their types at the level of a function? | 10:30 | ||||||||||||||||||||||||||||||||||||||
10:31
[TuxCM] left
10:53
brrt joined
11:15
brrt left,
brrt joined
|
|||||||||||||||||||||||||||||||||||||||
brrt | Ulti: we wanted macro's at some point | 11:22 | |||||||||||||||||||||||||||||||||||||
and in a more general sense, what we want is the ability to add 'cleverness' to our compiler | |||||||||||||||||||||||||||||||||||||||
.tell Zoffix you're welcome back on #moarvm if you fancy | 11:34 | ||||||||||||||||||||||||||||||||||||||
yoleaux | brrt: I'll pass your message to Zoffix. | ||||||||||||||||||||||||||||||||||||||
lizmat | m: my int $max = 10_000_000; for ^$max { }; say now - INIT now | 11:47 | |||||||||||||||||||||||||||||||||||||
camelia | 0.50097303 | ||||||||||||||||||||||||||||||||||||||
lizmat | m: my int $max = 10_000_000; for ^$max -> int $_ { }; say now - INIT now | 11:48 | |||||||||||||||||||||||||||||||||||||
camelia | 0.1320692 | ||||||||||||||||||||||||||||||||||||||
lizmat | timotimo: ^^^ | ||||||||||||||||||||||||||||||||||||||
so I have a patch that will plug the right signature into the block, but I don't get that optimization still | |||||||||||||||||||||||||||||||||||||||
suggestions ? | |||||||||||||||||||||||||||||||||||||||
12:01
[TuxCM] joined
12:13
Zoffix joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | m: my int $max = 10_000_000; for ^$max { .abs }; say now - ENTER now | 12:13 | |||||||||||||||||||||||||||||||||||||
camelia | 1.8581668 | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: my int $max = 10_000_000; for ^$max -> int $_ { .abs }; say now - ENTER now | ||||||||||||||||||||||||||||||||||||||
camelia | 1.766645192 | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: my int $max = 10_000_000; for ^$max { .abs; .abs; .abs; }; say now - ENTER now | 12:14 | |||||||||||||||||||||||||||||||||||||
camelia | 4.26337106 | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: my int $max = 10_000_000; for ^$max -> int $_ { .abs; .abs; .abs; }; say now - ENTER now | ||||||||||||||||||||||||||||||||||||||
camelia | 4.95017282 | ||||||||||||||||||||||||||||||||||||||
Zoffix | lizmat: ^ that optimization can be detrimental, if you're doing something with $_ that would require boxing. | ||||||||||||||||||||||||||||||||||||||
For the first two evals locally I get 3.8717541 and 6.91530516 | |||||||||||||||||||||||||||||||||||||||
lizmat | true, but how often do you do something other than indexing with $_ in a for ^1000 { } (or anything with $_ at all? ) | 12:16 | |||||||||||||||||||||||||||||||||||||
Zoffix | lizmat: how often? :) | ||||||||||||||||||||||||||||||||||||||
lizmat | well, lemme put it this way: most often when I have code something like for ^1000 { }, it was for doing something 1000 times | 12:17 | |||||||||||||||||||||||||||||||||||||
Zoffix | You're also changing semantics: | ||||||||||||||||||||||||||||||||||||||
m: multi foo (int) { die "cannot use native stuff" }; multi foo (Int) {}; my int $max = 10_000_000; for ^$max { foo $_ } | |||||||||||||||||||||||||||||||||||||||
camelia | ( no output ) | ||||||||||||||||||||||||||||||||||||||
lizmat | and when not, $_ would be an index I used | ||||||||||||||||||||||||||||||||||||||
12:17
robertle joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | m: multi foo (int) { die "cannot use native stuff" }; multi foo (Int) {}; my int $max = 10_000_000; for ^$max -> int $_ { foo $_ } | 12:17 | |||||||||||||||||||||||||||||||||||||
camelia | cannot use native stuff in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | so you're saying I shouldn't do this and advise people to do an explicit -> $_ if they want that optimization to work ? | 12:18 | |||||||||||||||||||||||||||||||||||||
-> int $_ | |||||||||||||||||||||||||||||||||||||||
rather | |||||||||||||||||||||||||||||||||||||||
[Tux] |
|
12:20 | |||||||||||||||||||||||||||||||||||||
lizmat | m: my int $max = 10_000_000; for ^$max -> int $i { }; say now - INIT now # another interesting data point | 12:22 | |||||||||||||||||||||||||||||||||||||
camelia | 1.255137 | ||||||||||||||||||||||||||||||||||||||
Zoffix | lizmat: We'd have to document this as "for ^1000 block defaults to $_ is raw signature, but implementations are free to change it to an `int $_` instead, for optimization purposes, which means you'll get different multies called" | ||||||||||||||||||||||||||||||||||||||
lizmat | m: my int $max = 10_000_000; for ^$max -> int $_ { }; say now - INIT now # the name seems to matter | ||||||||||||||||||||||||||||||||||||||
camelia | 0.1381269 | ||||||||||||||||||||||||||||||||||||||
Zoffix | lizmat: and looking at ecosystem grep, I'd eyeball the more common case would be calling methods with $_ not indexing | 12:23 | |||||||||||||||||||||||||||||||||||||
lizmat | on loops with for ^100 ? | ||||||||||||||||||||||||||||||||||||||
Zoffix | "&hide(3, 15 + $_) for ^5;" | ||||||||||||||||||||||||||||||||||||||
gist.github.com/Whateverable/bffe3...32e527bc3f | |||||||||||||||||||||||||||||||||||||||
"for ^5 {$bc.send($_)};" | 12:24 | ||||||||||||||||||||||||||||||||||||||
But my bigger issue is the change in which multi gets called and having this extra magic behaviour in signatures of blocks | |||||||||||||||||||||||||||||||||||||||
lizmat | ok, I'll turn this into an issue then, maybe for 6.d :-) | 12:25 | |||||||||||||||||||||||||||||||||||||
Zoffix | *6.e | ||||||||||||||||||||||||||||||||||||||
:) | |||||||||||||||||||||||||||||||||||||||
lizmat | what strikes me atm, is the change in performance between int $_ and int $i | ||||||||||||||||||||||||||||||||||||||
well, I'm glad I got the opt going for ^$max as well, so that means I can get rid of a lot of nqp::while loops in the core | 12:26 | ||||||||||||||||||||||||||||||||||||||
Zoffix | lizmat: that's because the `$i` version still has $_ in it as well, doesn't it? | ||||||||||||||||||||||||||||||||||||||
Var (lexical $_ :decl(var)) | 12:27 | ||||||||||||||||||||||||||||||||||||||
Op (bind) | |||||||||||||||||||||||||||||||||||||||
Var (lexical $_) <wanted> | |||||||||||||||||||||||||||||||||||||||
Op (getlexouter) <wanted> | |||||||||||||||||||||||||||||||||||||||
SVal ($_) | |||||||||||||||||||||||||||||||||||||||
lizmat | m: dd (-> int $i { }).signature | 12:28 | |||||||||||||||||||||||||||||||||||||
camelia | :(int $i) | ||||||||||||||||||||||||||||||||||||||
lizmat | m: dd (-> int $_ { }).signature | ||||||||||||||||||||||||||||||||||||||
camelia | :(int $_) | ||||||||||||||||||||||||||||||||||||||
Zoffix | But the $_ is still there in $i case, which is bound to outer $_, whereas in the $_ case, it's just bound to the param | ||||||||||||||||||||||||||||||||||||||
lizmat | m: (-> int $_ { dd MY::.keys })(42) | 12:29 | |||||||||||||||||||||||||||||||||||||
camelia | ("\$_", "\$*DISPATCHER").Seq | ||||||||||||||||||||||||||||||||||||||
lizmat | m: (-> int $i { dd MY::.keys })(42) | ||||||||||||||||||||||||||||||||||||||
camelia | ("\$*DISPATCHER", "\$i", "\$_").Seq | ||||||||||||||||||||||||||||||||||||||
lizmat | ah., indeed | ||||||||||||||||||||||||||||||||||||||
timotimo | Ulti: at least the 0.123 thing is "easily" solved in the core setting. | 12:30 | |||||||||||||||||||||||||||||||||||||
12:35
brrt left
12:36
diakopter joined
12:43
Zoffix left
13:05
Zoffix joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | "<Zoffix> *6.e" FWIW, I meant that our generic "some later language version" designator is now 6.e, not that 6.d is on lock down for any new features or anything. | 13:07 | |||||||||||||||||||||||||||||||||||||
13:07
Zoffix left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: d69fd2f370 | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp Better document the for ^100 loop optimization Basically, use <foo> instead of ('foo'), reduce indentation to 2 instead of 4, and add the nqp equivalent of the code being codegenned. |
13:08 | |||||||||||||||||||||||||||||||||||||
13:37
brrt joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 9b07e7bf3d | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp Make the for ^100 loop optimization about 2% faster By moving the update of the index to the condition and using a 2 parameter nqp::while instead of the 3 parameter one. |
14:03 | |||||||||||||||||||||||||||||||||||||
14:13
skids joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 3d9ea6ebf7 | (Elizabeth Mattijsen)++ | 6 files Add QuantHash.Setty|Baggy|Mixy coercer methods These are basically frontends for coercing to the given object, but with maintaining the mutability of the object. So: say (1,2,3).Set.Baggy; # Bag(1, 2, 3) say (1,2,3).SetHash.Baggy; # BagHash(1, 2, 3) |
14:47 | |||||||||||||||||||||||||||||||||||||
14:59
brrt left
15:03
fake_space_whale joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 5c429e4ead | (Zoffix Znet)++ | 2 files Make Rationals fully-immutable Fixes RT#130774: rt.perl.org/Ticket/Display.html?id=130774 This commit changes the performance landscape of rationals. As described in the Work Proposal[^1], the optimization was removed ... (6 more lines) |
15:28 | |||||||||||||||||||||||||||||||||||||
synopsebot | RT#130774 [resolved]: rt.perl.org/Ticket/Display.html?id=130774 [BUG] Rational.REDUCE-ME has a data race | ||||||||||||||||||||||||||||||||||||||
rakudo: 3d10a7f1e7 | (Zoffix Znet)++ | src/core/Rat.pm6 [CaR Grant] Make Rational reduction 43% faster |
|||||||||||||||||||||||||||||||||||||||
15:33
Kaiepi left,
Kaiepi joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 097826ef7b | (Zoffix Znet)++ | src/core/Rational.pm6 [CaR Grant] Make argless Rational.round 4.7x faster It's used by Rational.Str and Rational.base, so should give some gravity boost to those as well. |
15:37 | |||||||||||||||||||||||||||||||||||||
rakudo: db66a13848 | (Zoffix Znet)++ | src/core/Rational.pm6 [CaR Grant] Optimize/fix Rational.new - Makes creation of Rationals 19% faster - Fixes loss of proper typing of numerator/denominator with the types the role was parametarized with |
|||||||||||||||||||||||||||||||||||||||
roast: 9adbc0694d | (Zoffix Znet)++ | MISC/bug-coverage-stress-6.d.t Cover data race in Rational Closes RT#130774: rt.perl.org/Ticket/Display.html?id=130774 Rakudo fix: github.com/rakudo/rakudo/commit/6dd20588b6dfb75 |
15:39 | ||||||||||||||||||||||||||||||||||||||
rakudo: 38de1e512e | (Zoffix Znet)++ | t/spectest.data Add MISC/bug-coverage-stress-6.d.t to list of test files |
|||||||||||||||||||||||||||||||||||||||
synopsebot | RT#130774 [resolved]: rt.perl.org/Ticket/Display.html?id=130774 [BUG] Rational.REDUCE-ME has a data race | ||||||||||||||||||||||||||||||||||||||
roast: d36e39833b | (Zoffix Znet)++ | S32-num/rat.t [CaR Grant] Spec Rational keeps nu/de in proper types |
15:41 | ||||||||||||||||||||||||||||||||||||||
15:59
brrt joined
16:05
Ven`` joined
16:17
fake_space_whale left
16:24
robertle left
16:48
bisectable6 left
16:49
bisectable6 joined,
ChanServ sets mode: +v bisectable6
17:15
robertle joined
17:38
Ven`` left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: d1729da26a | (Zoffix Znet)++ | src/core/Rat.pm6 Make infix:<**>(Rational, Int) more than 10x as fast Makes `<50000123/50000000> ** 50_000` run 10.26x as fast Makes `for ^2000 { my $ = (42 / $_) ** $_ }` run 16.72x as fast Closes github.com/rakudo/rakudo/issues/1955 R#1955 Rationals are now[^1] guaranteed to be always in reduced form, ... (5 more lines) |
17:39 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#1955 [open]: github.com/rakudo/rakudo/issues/1955 [perf] Investigate whether $rat**$huge-power can be optimized with math smarts | ||||||||||||||||||||||||||||||||||||||
17:47
brrt left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | nice | 17:56 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: f9963bbfad | (Zoffix Znet)++ | src/core/Rat.pm6 Fix incorrect underflow detection in infix:<**> Introed in previous commit[^1]. Since we negate the power, we'd get an Inf on too large power, not 0e0. [1] github.com/rakudo/rakudo/commit/d1...075d38d55f |
17:59 | |||||||||||||||||||||||||||||||||||||
roast: 89cdc62dbd | (Zoffix Znet)++ | APPENDICES/A01-limits/overflow.t Cover rat-to-large-power failurage in SAP Rakudo fix: github.com/rakudo/rakudo/commit/d1...075d38d55f github.com/rakudo/rakudo/commit/f9...24338faaf4 |
18:19 | ||||||||||||||||||||||||||||||||||||||
18:48
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Zoffix Znet 'Make infix:<**>(Rational, Int) more than 10x as fast | 18:48 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/410442784 github.com/rakudo/rakudo/compare/3...729da26a8a | |||||||||||||||||||||||||||||||||||||||
18:48
travis-ci left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 712d0f0fbd | (Elizabeth Mattijsen)++ | 2 files Fix problem in QuantHash.ACCEPTS If the invocant or the candidate where a xxxHash type with initially some elements, but then all elements removed, would not accept a newly created xxxHash object. |
18:56 | |||||||||||||||||||||||||||||||||||||
18:58
ufobat___ left
19:17
dogbert17 joined
|
|||||||||||||||||||||||||||||||||||||||
dogbert17 | ZOFFLOP: t/spec/S17-supply/syntax.t | 19:18 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 76e5f9c809 | (Elizabeth Mattijsen)++ | 7 files Properly add QuantHash.Setty|Baggy|Mixy coercers Also cover the :U cases, so Set.Baggy will return a Bag type object and SetHash.Baggy will return a BagHash type object. And also take care of the identity cases: Set.Setty -> Set, SetHash.Setty -> SetHash. These facilitate some refactoring on the set operators. |
19:32 | |||||||||||||||||||||||||||||||||||||
rakudo: 3a6c119713 | (Elizabeth Mattijsen)++ | src/core/set_addition.pm6 Slightly change semantics of (+) on QuantHashes If the left-hand side of the (+) (also known as ⊎) is mutable, then the resulting QuantHash object will also be mutable. If it is immutable, it will stay immutable as before. This should allow us to better optimize things like: ... (9 more lines) |
20:05 | ||||||||||||||||||||||||||||||||||||||
roast: 53a4002c84 | (Elizabeth Mattijsen)++ | S03-operators/set_addition.t Adapt to slightly changed (+) semantics As described in github.com/rakudo/rakudo/commit/3a6c119713 |
20:06 | ||||||||||||||||||||||||||||||||||||||
roast: fb86d0aab1 | (Elizabeth Mattijsen)++ | S03-operators/set_addition.t Disable debuggiong helpers |
20:07 | ||||||||||||||||||||||||||||||||||||||
20:09
pmurias joined
20:24
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'Fix problem in QuantHash.ACCEPTS | 20:24 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/410473621 github.com/rakudo/rakudo/compare/f...2d0f0fbd85 | |||||||||||||||||||||||||||||||||||||||
20:24
travis-ci left
|
|||||||||||||||||||||||||||||||||||||||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually. | 20:24 | |||||||||||||||||||||||||||||||||||||
lizmat | apt-get failed, so false alarm | 20:25 | |||||||||||||||||||||||||||||||||||||
20:29
Ven`` joined
20:52
Ven`` left,
pmurias left
20:53
pmurias joined
20:58
Ven`` joined
21:15
skids left
21:16
robertle left
21:32
Ven` joined
21:35
Ven`` left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: b826a07a7e | (Elizabeth Mattijsen)++ | 2 files Slightly change semantics of (-) on QuantHashes If the left-hand side of the (-) (also known as ∖) is mutable, then the resulting QuantHash object will also be mutable. If it is immutable, it will stay immutable as before. This should allow us to better optimize things like: ... (9 more lines) |
21:54 | |||||||||||||||||||||||||||||||||||||
roast: e234049a00 | (Elizabeth Mattijsen)++ | S03-operators/set_difference.t Adapt to slightly changed (-) semantics As described in github.com/rakudo/rakudo/commit/b826a07a7e |
21:55 | ||||||||||||||||||||||||||||||||||||||
lizmat | more tomorrow& | 21:58 | |||||||||||||||||||||||||||||||||||||
22:08
pmurias left
22:20
gfldex left
23:02
Ven` left
23:34
gfldex joined
|