01:07 pyrimidine joined 01:52 pyrimidine joined
MasterDuke timotimo: i just rebuilt moar/nqp/rakudo with jnthn++ 02:15
's latest changes
timotimo ah, good! 02:16
will be interesting to see if things improve
MasterDuke and now the rakudo version with natives is noticeably faster
timotimo lovely! 02:17
what code were we talking about again?
i was thinking of whateverable and memory leaks and such
MasterDuke 'use nqp; sub a() { nqp::stmts((my $f := nqp::open("small_compile.sql", "r")), (my str $l), (my int $s = 0), nqp::while(($l = nqp::readlinefh($f)), ++$s), $s) }; say(a())'
where small_compile.sql is 1m lines 02:18
timotimo can you give percentage improvements or something?
MasterDuke the pure nqp version was the same, the rakudo version with native is now just slightly slower than the nqp version 02:19
when before it was almost twice as slow
timotimo how slight we talking?
MasterDuke oh, maybe slightly faster 02:20
MasterDuke double checks which commands were run
no, the nqp version is about 50ms faster on average 02:21
1620 vs 1670
timotimo that sounds quite good 02:22
so 1.6s to slurp up an 1m line file line-by-line
MasterDuke yep. though perl5 does the same thing in 190 02:25
timotimo oof 02:26
with utf8, too?
or does perl5 read it as ascii?
MasterDuke it reads as ascii, let me try again with utf8 02:27
utf8 is 1165 02:28
timotimo we're quite close, then
MasterDuke so we're only 0.5s off? not terrible
timotimo how is ascii with perl6? probably rather slow
MasterDuke 1250 02:30
so ~ 0.4s faster than utf8 02:31
though this is with essentially writing nqp in perl6 02:32
oh, and actually all those non-perl5 times include profiling
uh, some of them do 02:33
timotimo the difference through profiling is stronger when you invoke stuff and allocate stuff
unless you mean perf 02:36
in which case the overhead is almost negligible
MasterDuke the naive perl6 version, 'my int $s = 0; ++$s for "small_compile.sql".IO.lines; say $s', takes 3875 in contrast to writing nqp in perl6
no, i was doing --profile
timotimo ok 02:37
MasterDuke ah, that's not exactly the same naive perl6 i tested yesterday, that was 'sub a() { my $s = 0; ++$s for "small_compile.sql".IO.lines; $s }; say(a())', but even it is 4200 instead of 4700, so ~0.5s faster 02:41
and making $s an int brings it down another 350ms 02:46
timotimo nice
02:48 ilbot3 joined
MasterDuke and FWIW, this 'sub a() { my $f = open "small_compile.sql"; my $l; my int $s = 0; while $l = $f.get { ++$s }; return $s }; say(a())' was 2870 03:02
but this 'sub a() { my $f = open "small_compile.sql"; my int $s = 0; while $f.get -> $l { ++$s }; return $s }; say(a())' was 3340 03:03
03:12 agentzh joined 05:13 KDr2 joined 05:31 geekosaur joined 06:34 brrt joined 06:53 domidumont joined 06:59 domidumont joined
brrt merging the data section support is going to be one hell of a job 07:20
07:46 brrt joined
brrt blog.pyston.org/2017/01/31/pyston-...ure-plans/ 07:48
(hard not to think 'another one bytes the dust')
nwc10 I wonder if dropbox will now be looking at grumpy 07:58
and also "Dropbox has increasingly been writing its performance-sensitive code in other languages, such as Go" 07:59
brrt grumpy, that was the python-to-go-compiler 08:00
wasn't it?
nwc10 yes
there's sort of two parts to my two lines (in my head at least) hence the "also"
brrt well, ehm, hmmm, i'm not sure how to interpret that 08:01
nwc10 1) looks like their Python 2 EOL strategey is "not Python"
arnsholt I strongly suspect that speed and CPython compatibility (in particular extensions) are almost diametrically opposed
brrt nods
brrt nods enthusiastically
counterpoint: SciPY
nwc10 2) I wonder if the arrival of Grumpy makes them more interested in that approach for the Python they do have
yes, roughly what I was thinking - does a sweet spot between "more speed" and "enough compatibilitly" even exit? 08:02
er, exist
arnsholt Isn't SciPy mostly a wrapper over NumPy, which plugs into LAPACK/BLAS/whatever?
nwc10 Hacker News is brutal: news.ycombinator.com/item?id=13534992 08:03
brrt oh, i've mostly stopped reading it
nwc10 read that. there are just two comments. Both polite.
brrt ah, seen
reasonably polite, yes
nwc10 yes, well
brrt meanwhile, we're still sloughing on with MoarVM.... 08:04
nwc10 polite words. not polite concepts
brrt to be fair
I'd move to go if I was them
it is an amazing tool, if not the most elegant language
to be also fair, I'm sometimes kind of amazed of how far our little community has come 08:10
samcv nqp: say(nqp::unicmp_s('a', 'B', 7, 0, 0,0)) 08:18
camelia nqp-moarvm: OUTPUT«1␤»
samcv m: use nqp; say(nqp::unicmp_s('a', 'B', 7, 0, 0,0))
camelia rakudo-moar 951a44: OUTPUT«This type cannot unbox to a native integer: P6opaque, Str␤ in block <unit> at <tmp> line 1␤␤»
samcv for some reason this tries to unbox into the incorrect type
it tries to unbox the strings into integers and the 7 into a string
and i'm not sure why the hell 08:19
it does this. anybody know more about this type of thing?
Geth MoarVM/jit-data-section: 2c2374c01f | (Bart Wiegmans)++ | 2 files
Add data section for JIT code

This enables us to store (function) pointers and the like in a separate section rather than having to shuffle them in via constant expressions (ie. movabs). Expected to be a code-size saving, might eventually be used to canonicalize pointers and make JIT code serializable.
MoarVM/jit-data-section: 2d81976c6c | (Bart Wiegmans)++ | 7 files
Emit data node for extop 'fake' registers

This should plug a minor memory leak from malloc()-ing 'fake' registers used for extop support. Introduces a MVM_JIT_DATA node type.
brrt PR coming up
Geth MoarVM: bdw++ created pull request #516:
Add data section for JIT compiled code
08:49 zakharyas joined 09:38 domidumont joined
jnthn brrt++ 10:03
Will look at that later when my @other-task are cut down a bit :)
brrt sure :-) 10:04
NB: i want to do more advanced stuff, like having a table of pointers and supporting serialization / linking
but, not really necessary for now 10:05
jnthn *nod*
There's always opportunity to do more stuff... :)
brrt infinite amounts of work, if you want it 10:06
samcv hi jnthn 10:13
jnthn hi, samcv
samcv when you have the time can yo usee what i wrote above?
about 1 hour ago
jnthn About the op oddity? I've no immediate idea :S
samcv yeah
i *thought* it worked fine before 10:14
jnthn I assume the oplist entry is correct?
'cus that's what the NQP mapping uses for its types
samcv this is in MVM or in nqp? 10:17
ah looks like mvm
w(int64) r(str) r(str) r(int64) r(int64) r(int64) :pure
that looks right to me
jnthn Then your call looks wrong, I think? 'cus you passed 4 ints at the end? 10:19
nqp::unicmp_s('a', 'B', 7, 0, 0,0)
Is that final 0 meant to be there? 10:20
samcv heh
m: use nqp; say(nqp::unicmp_s('a', 'B', 7, 0, 0) 10:21
camelia rakudo-moar 951a44: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> qp; say(nqp::unicmp_s('a', 'B', 7, 0, 0)⏏<EOL>␤»
samcv m: use nqp; say(nqp::unicmp_s('a', 'B', 7, 0, 0))
camelia rakudo-moar 951a44: OUTPUT«-1␤»
samcv aha!
very good
10:35 agentzh joined 12:28 domidumont joined 13:00 pyrimidi_ joined 13:01 dogbert17_ joined 13:02 geekosaur joined 13:26 pyrimidine joined
timotimo IMO "make clean" should also clean 3rdparty folders 13:41
13:42 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'Refuse to form an NFA with a zeroed to-state. 13:42
travis-ci.org/MoarVM/MoarVM/builds/197052674 github.com/MoarVM/MoarVM/compare/8...d4bd53e62a
13:42 travis-ci left 13:46 KDr2 joined
brrt make realclean does, i think 13:48
timotimo oh 13:49
brrt 'git submodule foreach git clean -xdf' is what i usually do
timotimo hehe. 13:50
so .. how did it happen that suddenly the code threw sigill?
i have a theory
brrt hmmmm 13:51
is it JIT related\
timotimo no
i think my exclusion patterns for syncthing aren't good enough
so perhaps it synchronised some .a files 13:52
i'm pretty sure i'm excluding .o files
14:00 ggoebel joined 14:05 domidumont joined 14:37 agentzh joined 16:11 pyrimidine joined 16:14 brrt joined 16:41 pyrimidine joined 16:52 domidumont joined 16:53 agentzh joined 17:00 pyrimidine joined 17:22 zakharyas joined 17:29 geekosaur joined 17:32 pyrimidine joined 18:00 pyrimidine joined 18:16 pyrimidine joined 18:27 pyrimidine joined 18:42 Geth joined 18:52 pyrimidine joined 19:00 agentzh joined 19:07 FROGGS joined 19:20 pyrimidine joined 19:50 pyrimidine joined 19:54 agentzh joined 20:01 FROGGS joined 20:18 pyrimidine joined 20:51 pyrimidine joined 21:09 agentzh joined 21:36 agentzh joined 22:15 MasterDuke joined 22:51 pyrimidine joined 23:02 ggoebel joined