bartolin oops, yesterday a typo managed to sneak into jvm specific code: github.com/rakudo/rakudo/pull/784 05:29
dalek kudo/nom: f060da0 | bartolin++ | src/core/control.pm:
Fix typo in JVM specific code
07:39
kudo/nom: 7fabb57 | niner++ | src/core/control.pm:
Merge pull request #784 from usev6/patch-1

Fix typo in JVM specific code
[Tux] O...M...G... !!! 09:35
This is Rakudo version 2016.05-103-g7fabb57 built on MoarVM version 2016.05-18-g1339332
test 17.581
test-t 9.785
csv-parser 21.295
Who is to receive some beer? 09:36
nine It is really happening! 09:37
bartolin wow, lizmat++ 09:49
tadzik :o 09:58
lizmat++
RabidGravy Ooooog 10:01
nine @s@s@s @s1qa23x44444444@s.@sp@s[@s;}" 10:02
Ooops...sorry, cleaning keyboard
RabidGravy so the 25% speed-up is nice to have in the back pocket, I think I'd better be testing all the modules against this 10:07
stmuk_ I might have to rewrite my YAPC talk "Lying with Benchmarks - Perl 6 is Faster!" :-( 10:28
lizmat sorry stmuk_ :-) 10:35
[Tux] stmuk_, you could do as I did: make the performance slide dynamic, so hitting that slide is always up-to-date :) 10:51
dalek kudo/nom: 6e62c40 | lizmat++ | src/core/Mu.pm:
Give Mu.BUILD_LEAST_DERIVED the same treatment

Not sure how this will affect performance, but it seemed like the right thing to do in light of the performance gain that the Mu.BUILDALL work gave us.
11:24
jnthn lizmat: It'll make mixins faster, if you're looking for how to exercise it ;) 11:43
lizmat runtime mixins you mean ?
jnthn Yes 11:45
.oO( there are others? :))
lizmat ok, I'll try some
jnthn (I call `class Foo does Bar { }` composition rather than mixing it, because the semantics are rather different.)
lizmat jnthn: why is BUILDALL taking *@ and not doing anything with it ? 12:09
is this some interface thing I don't know about ?
actually, same for bless ?
dalek kudo/nom: c6faf9b | lizmat++ | src/core/Iterable.pm:
Streamline Iterator.flat
12:15
jnthn Yeah, that Parent{ ... } interface we're not supporting yet 12:20
Will need to do that at some point...
lizmat until then, I can take it out of bless and BUILDALL ? 12:21
or perhaps turn bless into a multi ? 12:22
[Tux] This is Rakudo version 2016.05-104-g6e62c40 built on MoarVM version 2016.05-18-g1339332 12:23
test 17.559
test-t 9.734
csv-parser 20.887
just for continuous feedback 12:24
RabidGravy well I've just tested 55 modules with the latest and it all works :) (probably covers about 10% of the ecosystem with dependencies) 12:30
lizmat *phew* 12:31
RabidGravy though it hasn't made any difference to the length of time that takes (however I can't remember how many new modules and what changes to the numbers of tests since I last ran it) 12:34
dalek kudo/nom: d76c3fb | lizmat++ | src/core/DateTime.pm:
Fix positional in call to bless: it should be named
12:45
kudo/nom: 4179bdc | lizmat++ | src/core/Mu.pm:
Make object construction again 1.8x faster

It turns out that Mu.bless and Mu.BUILDALL were taking positional parameters that were never actually given (apart from one arguably faulty spectest). This in turn caused flattening on an empty array to be performed. And then get passed to BUILDALL, which in turn didn't do anything with it. According to spec, bless should take autovivifying type objects, but this has not been implemented.
Until that happens, it would seem we can use the performance boost of not allowing positionals towards Mu.bless and Mu.BUILDALL, instead of silently eating them and not doing anything with them.
12:59
lizmat [Tux]: ^^^ :-)
probably won't make it below 9 yet, but there's hope :-) 13:00
dalek ast: f1dcc25 | lizmat++ | S12-construction/construction.t:
Fix faulty test of .bless
13:01
ast/6.c-errata: 93f6013 | lizmat++ | S12-construction/construction.t:
Fix faulty .bless test
13:02
[Tux] This is Rakudo version 2016.05-107-g4179bdc built on MoarVM version 2016.05-18-g1339332 13:10
test 17.101
test-t 9.734
csv-parser 20.817
lizmat hmmm... that's eh, disappointing ? 13:14
[Tux] timotimo, I realized after I counted my return statements, that the returns are most likely not the hot-spots that are still causing a slowdown: it is much more likely my "next" statements are the cause of slowness 13:18
psch nine: from the looks of it, the way i'm stuffing the J::Class into $*W doesn't carry into the EVALs 13:45
which i take it means we get a new World with each EVAL
dalek kudo/nom: 51e1a27 | lizmat++ | src/core/List.pm:
Make List.from-slurpy-flat about 10% faster

Which directly translates to the same efficiency gain for any call to a sub/method with a slurpy array.
13:52
psch also of note, the LinkageError apparently happens due to the second EVAL 14:44
probably because we've finished writing the J::Class for the first one already and loaded it afterwards
which means putting the different EVALs into the same class can't work with the current structure at all, unless i'm missing something 14:45
nine psch: yes, every compilation unit (including EVALs) gets its own world. Part of my EVAL fix was to share specific data between those worlds 14:54
psch right, yeah, i remember bits of that 14:56
ah, so that'd also be the peg to hang the JCLASS on, assuming i'm wrong and stuffing multiple EVALs into the same JCLASS works
timotimo [Tux]: you are right. my over-simplified test with and without a useless next give a difference from 10s to 17s 15:05
er, i mean, you could be right; next is slow, but i can't know if that's your bottleneck or not 15:06
[Tux] his is Rakudo version 2016.05-108-g51e1a27 built on MoarVM version 2016.05-18-g1339332 15:11
test 17.157
test-t 9.584
csv-parser 21.411
timotimo, I'm sure it is
timotimo it's probably not possible to rewrite your code to use if/else instead of skipping with else? 15:12
just for performance test, i mean 15:13
lizmat timotimo: I looked at doing that, but it's not simple :-( 15:28
timotimo yeah, i feared that
dalek kudo/nom: 6bcf4dd | lizmat++ | src/core/Junction.pm:
Make Junction grok completely empty List states

While attempting to reduce allocations for empty Lists, I found that the Junction code could not cope very well with an unallocated
  $!reified in its states List. This is now a thing of the past.
15:31
timotimo ooooh
good catch
jnthn Hm, I can likely speed up next during my hacking time next week, given I've been working on return :) 15:32
dalek kudo/nom: 7584139 | lizmat++ | src/core/List.pm:
Make List.from-slurpy not allocate when not needed
jnthn has nearly finished a blog post 15:33
Should get it finalized and posted after making dinner. :)
timotimo speed up next next? 15:34
lizmat ++jnthn
cognominal jnthn++ 15:37
mst (((jnthn)))++ 15:38
[Tux] jnthn++ 15:47
lizmat++
psch i'm thinking that $*CODEREFS is actually what should be shared via mast_frames 15:59
...i'm *not* sure that's fully thought out or sensible, though 16:00
FROGGS o/ 16:04
timotimo o/ 16:07
FROGGS ummm 16:08
what spectest target should I use?
m-spectest m-spectest5 m-spectest6 m-spectest_full5 m-spectest_full6
mst one of those 16:09
probably
</not-helping>
FROGGS heh
timotimo i usually just m-spectest
or rather, spectest
FROGGS k
nine FROGGS: spectest passed, test passed, panda's bootstrap works and panda install Task::Star is going on just fine :) 16:18
timotimo that sounds encouraging 16:19
nine Successfully installed Task::Star 16:20
[Tux] next is -Duselongdouble support? 16:22
FROGGS nine: with my patch?
[Tux] hides
timotimo [Tux]: as i may have said before, it requires that piece of design in moarvm that'll allow things longer than 64bit in registers 16:23
[Tux] someone suggested a plugin might do it
nine FROGGS: yes
FROGGS nine: awesome! thanks for testing :o)
[Tux] module/... whatever
FROGGS nice to have something to commit after several months :o)
nine FROGGS: your patch and merged rt128156_fix_precomp_deps_validation branch which should fix time stamp issues on file systems from the stone age
FROGGS: that patch takes a huge load off my shoulders :) 16:24
timotimo in theory, yeah. you'll have to treat every long double to be placed "behind" a pointer, and have a C function written for every kind of operation you want to do on long doubles
that will work
but it'll also suck :)
dalek kudo/nom: d0a0016 | FROGGS++ | src/core/CompUnit/PrecompilationRepository.pm:
fix content of .precomp/.../*.rev-deps files

These files contained wrong ids, namely several occurrences of the id of the file itself.
16:28
timotimo i wonder if this has a performance implication, too? like, at all? 16:29
FROGGS hmmm, my imagination is not good enough to guess 16:31
dalek kudo/nom: 491af60 | niner++ | src/core/CompUnit/Precompilation (3 files):
Fix precomp dependency checks on file systems with coarse timestamps.

Replace fragile timestamp check by checksums for deciding whether a precompiled dependency is still the same.
Many thanks to pmurias++ for suggesting using a hash!
16:34
nine With these two patches, rt128156 should hopefully be history :)
dalek kudo/nom: bca0daa | lizmat++ | src/core/List.pm:
Faster List.from-slurpy-onearg (from 20% upto 4x)

Which directly translates to same performance gains for the
  (+@list) signature: 4x for no parameters, to 20% for exactly 1.
More than one parameter is about 2.5x faster.
  - no longer revert to from-slurpy for cases != 1
   We've already done some of the work, why do it again?
  - no longer need to create a Perl 6 level capture
   Since we don't need to pass it on.
  - return bare List object for no parameters
16:46
lizmat no idea how this is going to affect test-t, probably not 16:48
timotimo cool! 16:49
dalek kudo/nom: 054a54a | (Daniel Green)++ | src/Perl6/Grammar.nqp:
Fix for RT #128306
16:54
kudo/nom: 8430f07 | lizmat++ | src/Perl6/Grammar.nqp:
Merge pull request #785 from MasterDuke17/RT128306

Fix for RT #128306
timotimo oh, synopsebot6 should probably hang out here, too
[Tux] This is Rakudo version 2016.05-115-g8430f07 built on MoarVM version 2016.05-18-g1339332 17:02
test 17.425
test-t 9.585
csv-parser 21.475
timotimo that's just 0.001 difference from the previous message
lizmat [Tux] : yeah, no (+list) sigs in Text::CSV 17:03
timotimo fair enough
lizmat should be noticeable in other places, though
timotimo yeah, many things in the setting have those 17:04
lizmat afk& 17:15
dalek ast: 716b94f | FROGGS++ | S10-packages/precompilation.t:
add another test for RT #128156
17:20
CQ who runs dalek? would be helpful to have RT#s show up as URLs instead of IRC channels ... : ) 17:21
timotimo that's what synopsebot6 can do :) 17:22
also, "showing up as irc channels" is probably your irc clients' fault :) 17:23
CQ timotimo: sure, anything with a #something is a channel...
timotimo i'm not so sure about that :) 17:24
CQ timotimo: I mean on my irc client (chatzilla)
timotimo OK
jnthn finally got around to blogging: 6guts.wordpress.com/2016/06/12/gri...rovements/ 17:56
mst woo
let's see if I can understand one word in three
masak "Do 5 small improvements that win an average of 1% each, and it adds up to a more satisfying 5% improvement." -- only just 18:01
m: say 1 - .99 ** 5
camelia rakudo-moar 8430f0: OUTPUTĀ«0.0490099501ā¤Ā»
masak or "not quite", rather 18:02
jnthn Which rounds up to 5% :P
masak yeah, yeah :) 18:03
actually, it was more the "adds up" part that bothered me ;)
jnthn Maybe "combine" woulda been better :) 18:04
masak "multiply up" :P
jnthn But hey, I'm a compiler hacker, not a statistician :P
masak .oO( you've sped things up significantly -- how *dare* you be off by a factor of .02!? ) :P 18:05
hm, is it `package Main;` in Perl 5, or `package main;`? 18:07
geekosaur the latter 18:09
masak jnthn: though I'm not really sure why you're switching packages at all there -- maybe out of a sense of fair comparison, because the Perl 6 class is block-scoped? 18:11
jnthn masak: Clarity mostly 18:12
masak anyway, it should probably be `main` so as not to needlessly confuse those faithful p5 readers out there ;) 18:13
jnthn Fine, but I'm not going to take the time to re-measrue :) 18:14
mst for clarity 18:16
package A {
...
}
would correspond nicely and save you the second package line
masak .oO( turns out lower-case `m` is 10% faster than upper-case `M`... ) o.O
what mst++ said
but yeah, no need to re-measure
jnthn mst: Hm, is that a recent-ish addition? 18:17
mst jnthn: no
masak 5.18 or so?
mst 5.14 18:18
masak oh wow
jnthn Time flies :)
Anyways, it can stay as it is in the post. 18:19
Took me weeks to find the energy to blog at all :P 18:20
masak jnthn++ # I know how that feels
jnthn And, fwiw, I'm not doing Perl 5 comparisons to see "whose ahead" rather than to give a sense of "is Perl 6 even in the ballpark" 18:22
CQ jnthn: thanks for the blogposts, they're fun and interesting reading, even if sometimes my comprehension levels at 30% if you're off to the depths of an issue : ) 18:25
mst jnthn: that's what I took it as 18:27
masak .oO( "whose alot" ) 18:29
jnthn: thanks for the blog posts. I always understand everything perfectly :P 18:30
masak .oO( that's only 95.09900499% true ) 18:31
jnthn
.oO( I look forward to analizing your next blog post too :P )
18:34
masak .oO( OH NOES WUT HAV I D... hey wait, that actually sounds rather nice ) 18:35
b2gills Can someone prune some of the branches on the rakudo repository? I mean some have parrot in the name. ( there are over 150 branches ) 18:38
timotimo tbh, i would have liked to see perl6 before, perl6 after and perl5 cycle counts for small, medium, big loops ... but that'd take ages :) 18:43
that should give slightly linear curves where you could easily-ish see startup cost and per-loop cost
masak timotimo: well volunteered! 18:44
timotimo hm. if jnthn gives me exact-ish commit ids for this work in question, that would be very doable 18:45
jnthn timotimo: I linked most of the commits from the post :) 18:47
FROGGS jnthn: a few hours ago CompUnit::PrecompilationRepository.load's return type has changed... (from CU to List) 18:52
jnthn: are we allowed to do that wrt policy?
timotimo oh 18:54
moritz FROGGS: is it tested in roast? used in the ecosystem? 19:21
if not, I think we can
FROGGS used in doc/htmlify.p6
but does not seem to be tested in roast 19:23
moritz I think the build process on hack still uses some older rakudo 19:27
2016.04
star-m: say 'version?' 19:28
camelia star-m 2016.01: OUTPUTĀ«version?ā¤Ā»
FROGGS [20:31] <dogbert17> interesting htmlify.p6 has suddenly stopped working 19:29
that's why I am asking
moritz right 19:30
dogbert17 it was this which made me suspicious: travis-ci.org/perl6/doc/builds/137088856 19:32
moritz if I add [0], it should work with both old and new code, right?
FROGGS most likely, yes 19:33
moritz push'd 19:34
travis will tell me :-)
FROGGS moritz++
dogbert17 moritz++
lizmat hmmm.... looks like something broke Inline::Perl5 19:41
Too many positionals passed; expected 2 arguments but got 3 19:42
in method new at /Users/liz/Github/panda/.panda-work/1465760385_4/lib/Inline/Perl5.pm6 (Inline::Perl5) line 949
ah, looks like *I* broke it 19:43
jnthn FROGGS: If it's not tested in roast, then technically yes it's allowed... Also, the compunit repo stuff is all still a tad up in the air, afaik 19:49
lizmat fixed in Inline::Perl5 19:56
FROGGS nine: this is probably not news to you, but t/spec/S10-packages/precompilation.t fails atm
FROGGS lizmat: this is news to me 20:21
lizmat: head passes here
ohh wait... 20:22
dalek ast: 8f34231 | FROGGS++ | packages/RT128156/ (4 files):
add missing test files
FROGGS facepalms
lizmat aha! :-) 20:23
FROGGS lizmat: now it should pass /o\
lizmat checks
FROGGS: clean now, indeed FROGGS++ 20:28
FROGGS \o/ 20:29
gnight #perl6-* 20:33
lizmat RT #128306 21:02
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128306
jnthn lizmat: There was a proposed MoarVM patch to fix that; I rejected it because it took the wrong approach, but suggested what might be a better way. 21:04
lizmat yeah, and I merged it :-) 21:05
054a54aa22d05554bbc1be to be precise
I started working on the P6W already
jnthn lizmat: ah, I missed that :) 21:08
jnthn blames the football :)
nine lizmat: your Inline::Perl5 fix looks fine :) Tests well and all the examples from my talks seem to continue to work 21:10
lizmat I was wondering if you could take it further, to remove posiitionals from .new as well 21:11
I think it will give a significant performance boost 21:12
if you're creating a lot of objects, that is
nine lizmat: you mean from Mu's .new? 21:13
lizmat no, from Perl5Package.new (line 726)
and Perl5Parent.new, (line 949)
nine No, I need to be able to pass those on to the Perl 5 class' constructor. And those take positionals very often. 21:14
lizmat ok, I figured something like that, that's why I didn't do it right away :-) 21:15
nine If anyone has a better idea for how to structure the code in PrecompilationRepository so .load doesn't have to return ($handle, $checksum), I'm all ears.
lizmat can't $checksum be a method on $handle ? 21:16
nine It could, but it just doesn't feel right. It's not a property of a CompUnit::Handle but of a PrecompilationUnit 21:17
lizmat so perhaps $handle is an attribute of PrecompilationUnit ?
nine which is a precomp file (consisting of bytecode and serialized objects) + its dependency information.
Hmm...having PrecompilationStore.load return a PrecompilationUnit. That suddenly doesn't sound as bad as the first two time I've thought about it. 21:19
jnthn Well, there's always returning some object with handle and checksum properties... :)
But yeah, the thing you load from a PrecompilationStore being a PrecompilationUnit sounds fairly right :) 21:20
nine Thanks :) 21:26
jnthn Sleep time...'night 21:39
lizmat gnight jnthn 21:40
timotimo gnite 21:43
dalek kudo/nom: 5d49498 | lizmat++ | src/core/List.pm:
Fixup List.sum

  - make sure we get a nice fail if it is a lazy list
  - don't allocate if it is and will be an empty list
  - streamline the addition loop
21:59
timotimo lizmat: do you think a small check of the first value in a list and skipping first-concrete for min and max can enhance performance? 22:10
lizmat no firm idea 22:11
timotimo i have a piece of code where min takes a big chunk of total run time. it spends 63% of time inside cmp, but 10.8% in first-concrete
all in all, min is in second place by exclusive time, with only 9.17%, but its inclusive time is a whopping 49.8%
hm, it could also be min is responsible for find-best-dispatchee calls ... which the profiler sadly can't appropriately place in the call graph :( 22:13
lizmat timotimo: now I'm not sure which min / max you're talking about 22:14
timotimo the method in any-iterable-methods
lizmat would have to benchmark and profile 22:16
which made me just realize I have been hacking way too long today already :-) 22:17
good night, #perl6-dev! 22:18
timotimo gnite!
thanks for your outstanding work today and always :)
hmm. how to output a stacktrace from nqp ... 22:24