samcv not sure how to include /usr/local/lib in the place the linker looks for the libs 00:05
in our configure files
ugexe github.com/MoarVM/MoarVM/blob/mast...up.pm#L462 ? 00:14
samcv ugexe, that doesn't specify a directory though 00:19
idk i need to include /usr/local/lib somehow which is where it puts libffi.so
ugexe yeah but you can add the name there 00:20
OS_MINGW32 has libdir => '@bindir@', for instance
samcv that just adds -l/usr/local/lib 00:24
which isn't a library it's a directory 00:25
ilmari[m] Yes, but after that -lffi will find /usr/local/lib/libffi.so 00:26
geekosaur don't you want -L there not -l ? 00:27
samcv yes i do geekosaur
that's my point
ugexe there is ldrpath, ldmiscflags, and others 00:31
ldrpath => '-L"/@libdir@"', 00:32
samcv hmm that may not be used in probe.pm 00:33
ugexe yeah probably not
samcv doesn't seem to be responding to CFLAGS env variable either 00:45
LDFLAGS seemed to work 00:46
though it can't find ffi.h
it's in /usr/local/include 00:47
CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" makes it work 00:48
no clue how to fix it for good though 00:49
make test for rakudo now passes 00:50
MasterDuke would it make sense to use the FSA for a bunch of the string operations? 01:10
a lot of them have what look like short lived allocations 01:11
AlexDaniel samcv: thanks! 01:18
samcv: ā€¦ what about github.com/perl6/nqp/issues/372 ? :)
samcv wait what did i do AlexDaniel ?
AlexDaniel resolved github.com/MoarVM/MoarVM/issues/693 :) 01:19
samcv ah the appveyor
maybe will try that tomorrow
AlexDaniel samcv: thanks 01:28
samcv will need to be nqp admin to do it though 01:32
01:32 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Stash native thread ID after GC unblock 01:32
travis-ci.org/MoarVM/MoarVM/builds/276930928 github.com/MoarVM/MoarVM/compare/e...fedf518854
01:32 travis-ci left
Zoffix samcv: I added you as admin to github.com/perl6/nqp , if that's what you meant 01:35
samcv woot 01:36
yeah i will add it then
01:36 zakharyas joined
Zoffix \o/ 01:38
01:55 ilbot3 joined 04:29 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Make native callback thread finding more robust 04:29
travis-ci.org/MoarVM/MoarVM/builds/276934185 github.com/MoarVM/MoarVM/compare/1...59f2ff2ebf
04:29 travis-ci left 04:37 Ven`` joined
Geth MoarVM: 3dea7dff4b | (Samantha McVey)++ | .appveyor.yml
Turn build section of Appveyor build off

Hopefully avoid "Specify which project or solution file to use because the folder contains more than one project or solution file." error.
04:55
samcv is it just me or have travis builds been slowing down 05:05
like a constant slowing down over since i started working on perl6 a year ago
timotimo i just realized that resuming continuations in other threads will be interesting from the instrumented profiler's perspective 05:53
since it has one full call graph per thread
though conceptually the thread pool that shuffles tasks around between many threads can easily make the distinction between individual threads useless
i'll probably have to come up with a good middle-ground between just merging call graphs from every thread into one big blob of data and having them all separate from each other 05:54
06:08 committable6 joined
samcv interesting 06:14
06:38 travis-ci joined
travis-ci MoarVM build passed. Jonathan Worthington 'Factor out callback thread finding 06:38
travis-ci.org/MoarVM/MoarVM/builds/276940092 github.com/MoarVM/MoarVM/compare/1...b664ea65e9
06:38 travis-ci left 06:40 domidumont joined 06:45 leont joined
timotimo gist.github.com/timo/080a2e733ad4f...6a5ad051a1 - the "summary all" output btw 07:11
07:16 brrt joined 07:19 ilmari[m] joined 07:25 Ven`` joined
nine For those who are disappointed by the mere 7 % speedup of csv-ip5xs.pl by JITing native calls, I did a micro benchmark of AssortedIntArgs from t/04-nativecall/02-simple-args.t 07:29
For this call I see a 2.5x speedup by JIT compiling :)
samcv :) 07:37
nine Speedup scales with number of arguments. A single argument gives ~ 2.2x speedup. So it's a pity that p5_call_method with its 9 arguments is not yet JITed. But also means there's lots to be gained still :) 07:42
07:44 AelxDnaiel joined
brrt good hi! 07:55
ohai nine
very cool work!
08:18 krunen joined 08:22 krunen joined 08:23 krunen joined 08:26 robertle joined 08:33 domidumont joined 08:48 zakharyas joined
jnthn morning o/ 09:00
nwc10 correct! 09:05
nine jnthn: have you seen the numbers I posted earlier? May be worth having a look at IO::Socket::Async::SSL perf after all :)
09:10 travis-ci joined
travis-ci MoarVM build passed. Samantha McVey 'Try and enable and build matrix with Appveyor' 09:10
travis-ci.org/MoarVM/MoarVM/builds/277066715 github.com/MoarVM/MoarVM/compare/e...d6af05db7a
09:10 travis-ci left
jnthn nine: Yeah, that passes a number of args, so :) 09:11
Will be interesting to try it out :)
samcv wow travis is slowww 09:12
jnthn nine: Is it ready for review?
nine jnthn: think so. I do wonder if I should try to squash the commits. There's a lot of back and forth now in that branch. 09:39
jnthn: I'm also a bit unsure about the ops. nativecallinvokejit may want to be renamed to ncinvoke to be closer to the ncinvoke_* variants. Of the latter currently only the ncinvoke_o is really used. The rest may become useful for pushing boxing of results into the HLL code. 09:43
09:48 zakharyas joined
jnthn What happens if we don't have the JI 09:56
T available? 09:57
I'm guessing the ops fall back to non-JIT?
nativeinvoke_o etc may be nice
The c is for call, and having call and invoke in the name is a bit funny :) 09:58
nine If the JIT is disabled, we fall back to good old nativecallinvoke. Same as if we don't support a particular argument type. 10:00
jnthn Alright
10:15 benchable6 joined, unicodable6 joined 10:48 krunen joined 10:55 krunen joined 11:38 timo1 joined 11:53 travis-ci joined
travis-ci MoarVM build passed. Samantha McVey 'Trigger Appveyor build' 11:53
travis-ci.org/MoarVM/MoarVM/builds/277068958 github.com/MoarVM/MoarVM/compare/4...24dcf8fc01
11:53 travis-ci left
Geth MoarVM: 86407034d0 | (Timo Paulssen)++ (committed by Jonathan Worthington) | 3 files
Protect parameterization additions with a mutex

Partially addresses #554
13:17
nwc10 jnthn++ # bloggage 13:21
(I'm behind, it seems)
jnthn I'm even more behind with bloggage... 13:22
brrt aren't we all :-P 13:26
timotimo i don't have my own blog 13:30
well, i do have, like, a blog, or something
on my website .. which i haven't touched since 2012
Zoffix write on blogs.perl.org :)
timotimo not sure i like the place much
Zoffix write on rakudo.party :) 13:32
timotimo hmm, not sure how to make content that fits well with that page 13:33
less page, more 'site i guess
Geth MoarVM: 3a2990d5e8 | (Jonathan Worthington)++ | src/6model/parametric.c
Complete fix for for parametric type races

Make sure we really do intern the parameterizations, and do a defensive copy so readers are safe. Should fully fix the issues in issue #554.
13:42
jnthn Apparently there was a race in my typing of that commit message.. 13:46
dogbert17 sometimes test 11 t/spec/S17-supply/supplier-preserving.t fails with the following message: 14:37
# Failed test 'Close called as expected' # at t/spec/S17-supply/supplier-preserving.t line 32 # expected: 'xxxxxxxxxx' (len 10) # got: 'xxxxxxxxx' (len 9)
is this a known failure ?
jnthn Yeah, though I didn't figure out what's going on yet 14:39
dogbert17 it seems to appear more often on a loaded system if that's any clue 14:40
jnthn Pretty much all concurrencly-involving bugs do, alas 14:43
*concurrency
dogbert17 tried to trip both ASAN and valgrind, but alas, no success 14:45
found a very old RT #123461 which might be relevant 14:48
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=123461
jnthn btw, the occasinal connection refused error you mentioned a bit ago in a new test in await-nonblocking.t is fixed in one of my Rakudo branches 14:49
14:49 committable6 joined
dogbert17 jnthn++ 14:49
14:50 releasable6 joined, bloatable6 joined, quotable6 joined, squashable6 joined 14:51 statisfiable6 joined
dogbert17 the send method has changed a bit since Moritz reported that race condition, so perhaps the issue is no longer relevant, github.com/rakudo/rakudo/blob/nom/...nel.pm#L42 14:51
jnthn May still apply, but don't think it's the issue here 14:54
Looking at another issue at the moemnt, so will look at that more later
15:05 timo joined 15:06 geekosaur joined 15:07 brrt joined
ugexe i wonder if libuv update got windows any additional spectest passes. the changelog has a fair bit of windows stuff 15:14
er wrong buffer :)
brrt timotimo: could we use the telemetry logger for getting bytecode sizes? 15:27
15:41 geekosaur joined
timotimo sure thing 15:48
Geth MoarVM/use_attribute_st_in_bind_attribute: 3b4b032984 | (Timo Paulssen)++ | src/6model/reprs/P6opaque.c
use attribute/value st for copy_to, not outer obj st

this caused a segfault when trying to bind a p6bigint to a matching attribute in a p6opaque.
15:56
timotimo brrt, i don't think i have an api for "just put a bit of data into the datastream", so you'll probably have to start and end an interval around the jitting process and attach the information with the interval_id 15:57
16:03 geekosaur joined
timotimo oh, i got distracted. nw i'm running the spec test. 16:30
Zoffix :) 16:32
timotimo had a few failures, but those were probably from too-old rakudo 16:38
only supplier-preserving fails 16:54
so if someone wants, they can merge this 16:55
Zoffix Can you merge it? :) 16:56
I'll do the bumps and write the tests.
timotimo sure 16:57
Geth MoarVM: 3b4b032984 | (Timo Paulssen)++ | src/6model/reprs/P6opaque.c
use attribute/value st for copy_to, not outer obj st

this caused a segfault when trying to bind a p6bigint to a matching attribute in a p6opaque.
Zoffix timotimo++
timotimo that was a good catch, Zoffix 17:00
17:34 Ven`` joined 17:39 domidumont joined
Geth MoarVM: usev6++ created pull request #695:
Fix FreeBSD build
18:18
ilmari discovers the .paramet.{ric,erized} union. cute 18:46
Geth MoarVM: 5bdb778446 | (Christian BartolomƤus)++ (committed using GitHub Web editor) | build/Makefile.in
Fix FreeBSD build
18:52
MoarVM: 3a2eab52f7 | (Jimmy Zhuo)++ (committed using GitHub Web editor) | build/Makefile.in
Merge pull request #695 from usev6/patch-1

Fix FreeBSD build
MoarVM/jit_nativecall: 16 commits pushed by (Stefan Seifert)++
review: github.com/MoarVM/MoarVM/compare/0...91ad7464d3
18:55
nine jnthn: ops are renamed. Open question is whether we want the twisted commit history or if I should just squash them into 2 commits. Excluding generated code the diff is just: 16 files changed, 329 insertions(+), 25 deletions(-) 18:56
jnthn nine: I guess the 2 squished would be easier to review; otherwise I'll just review the whole diff at once between master and it :) 19:09
nine jnthn: ok, I'll squash. The 2 commits will be implementation of the nativeinvoke_o op and then JITing that call, too. 19:15
jnthn Sounds good :)
19:28 brrt joined
brrt how would that work? 19:28
Geth MoarVM/jit_nativecall: 2d21965361 | (Stefan Seifert)++ | 19 files
Compile code for calling native functions.

MVM_nativecall_build builds a JIT graph manually and compiles it. The result is attached to the MVMNativeCallBody. For now the new nativeinvoke_* ops (mirroring invoke_*) will enter that code. Ideally we will replace the whole frame containing the nativeinvoke by JIT compiled code.
... (14 more lines)
19:41
MoarVM/jit_nativecall: ecdba29f9f | (Stefan Seifert)++ | 5 files
JIT compile JITed native calls

While we already generated machine code for performing the actual call to the C function, we perform all deconting and unboxing of arguments in high level code. This is so that spesh can optimize this code to what's actually necessary for a given call site.
... (14 more lines)
samcv jnthn, so i'm ready to start working on my final grant report. any tips
like what do i need to put in it. just overview of everything i did? or what
Geth MoarVM/jit_nativecall: af5bcee85f | (Stefan Seifert)++ | 19 files
Compile code for calling native functions.

MVM_nativecall_build builds a JIT graph manually and compiles it. The result is attached to the MVMNativeCallBody. For now the new nativeinvoke_* ops (mirroring invoke_*) will enter that code. Ideally we will replace the whole frame containing the nativeinvoke by JIT compiled code.
... (14 more lines)
MoarVM/jit_nativecall: 1edff49ad8 | (Stefan Seifert)++ | 5 files
JIT compile JITed native calls

While we already generated machine code for performing the actual call to the C function, we perform all deconting and unboxing of arguments in high level code. This is so that spesh can optimize this code to what's actually necessary for a given call site.
... (14 more lines)
nine Sorry for the noise. Just rebased again on the current master
samcv no problem nine 19:45
brrt can i still say i think this work is really cool
nine++
samcv our most important platforms are MacOS, Linux, FreeBSD, and what is most important after that
nine thanks brrt :) 19:46
samcv though alpine probably needs to be considered separate. maybe we can have a build in our matrix do musl builds?
looks like there's a musl-gcc wrapper and maybe we can use that to be able to test musl 19:47
Geth MoarVM: patzim++ created pull request #696:
Probe for gcc -Werror=* support
19:55
jnthn samcv: I don't tend to make them utterly exhaustive, because then it'd be a terribly boring read. I'd reference all the blog posts you did, which people can look to for details, and then focus the report on the improvements that resulted from the grant. 20:02
brrt samcv: windows?
samcv ok cool
yeah windows
sorry i meant to say that. what about after that 20:03
openbsd?
brrt ehm, are there any other platforms left :-P
jnthn samcv: If it makes sense, making it easy to cross-reference the final report back to the grant application so it's easy to see that the things in the application were completed is also nice :)
brrt not solaris anyway
samcv did we used to support that?
would be nice to have various vm's and test before each release 20:04
maybe a week or so before we release
timotimo still no haiku support in libuv, right? :| 20:05
jnthn IMO, the 3 most important platforms are Linux, OSX, and Windows, because by that point we've covered close to 99% of what people will use. The major BSDs come after that. Beyond that I think more important is not OS, but having testing on some big endian platform. 20:06
samcv what is big endian? 20:08
arm?
jnthn I think arm can be, depending on configuration 20:09
PPC is 20:10
bbiab, gotta do my homework :
:)
timotimo hm, i'll probably have to do something about endianness in the heap profiler output 20:16
currently i just fwrite the things, that's clearly not safe
lizmat timotimo: why? as long as the endianness is available as meta information? 20:24
timotimo then i'll have to change the heap analyzer, yeah
and it'd be helpful to write a piece of data that makes the endianness obvious 20:25
also, i'll never support middle endian :
:P
geekosaur we need to ship timotimo a pdp11? :p 20:26
timotimo there is no space in my home 20:27
moritz %*ENV<HOME> ~~ s/^^/ /; # how to create space in your home :-) 20:29
MasterDuke jnthn: thanks for merging the fsa realloc PR. have you looked at the next one? 20:48
speaking of the fsa... 20:54
jnthn, timotimo, etc: would it make sense to use the FSA for a bunch of the string operations? 20:55
timotimo not sure, could be. we definitely keep the size around anyway
MasterDuke what about for short-lived allocations within a function? 20:57
timotimo within a function, eh? 20:58
can we somehow figure out that it can fit onto the stack instead?
at least the memory blob for the string's contents. not the object itself, because the GC has to manage that 20:59
hm. that seems like a terrible idea, come to think of it.
MasterDuke don't think so for the few functions i looked at. i think join has one or two 21:00
timotimo it could be a good idea to try the FSA here and see what performance characteristics it offers
MasterDuke what's a good way to measure? 21:04
timotimo good question
the whole spec test suite is one way, but i expect it to be at least a bit noisy 21:05
MasterDuke you mean time to run the spectest? 21:06
timotimo yeah 21:07
probably a bad idea, right?
MasterDuke well, i bet it'll be hard to see anything less than 10% 21:11
timotimo yeah :( 21:14
timotimo has a little piece of fannkuch benchmark 21:35
hm, i might be able to get this into benchable 21:36
my (@l,@r); sub ri(@a,@b){@b.unshift(@a.shift) while @a.elems}; for (1..8).permutations { @l=@$_; repeat { @r=@l.splice(0,@l[0]); ri(@r, @l) } while @l[0] != 1 } 21:37
m: my (@l,@r); sub ri(@a,@b){@b.unshift(@a.shift) while @a.elems}; for (1..8).permutations { @l=@$_; repeat { @r=@l.splice(0,@l[0]); ri(@r, @l) } while @l[0] != 1 }
camelia ( no output ) 21:38
timotimo bench: releases my (@l,@r); sub ri(@a,@b){@b.unshift(@a.shift) while @a.elems}; for (1..8).permutations { @l=@$_; repeat { @r=@l.splice(0,@l[0]); ri(@r, @l) } while @l[0] != 1 }
benchable6 timotimo, starting to benchmark the 23 given commits
timotimo, Ā«hit the total time limit of 240 secondsĀ» 21:42
MasterDuke timotimo: maybe try AlexDaniel's trick of just giving it 2015.12,HEAD 21:43
timotimo right 21:45
bench: 2015.12,HEAD my (@l,@r); sub ri(@a,@b){@b.unshift(@a.shift) while @a.elems}; for (1..8).permutations { @l=@$_; repeat { @r=@l.splice(0,@l[0]); ri(@r, @l) } while @l[0] != 1 }
benchable6 timotimo, starting to benchmark the 2 given commits
timotimo, benchmarked the given commits, now zooming in on performance differences 21:46
timotimo, Ā¦2015.12: Ā«10.0083Ā» Ā¦HEAD: Ā«3.0507Ā»
timotimo neat. 21:47
that's quite a bit faster
i'd like a bit more detail, though 21:50
how come it didn't give me any zoom points?
bench: 2015.12,2016.12,2017.05,HEAD my (@l,@r); sub ri(@a,@b){@b.unshift(@a.shift) while @a.elems}; for (1..8).permutations { @l=@$_; repeat { @r=@l.splice(0,@l[0]); ri(@r, @l) } while @l[0] != 1 }
benchable6 timotimo, starting to benchmark the 4 given commits
timotimo, benchmarked the given commits, now zooming in on performance differences 21:52
timotimo, gist.github.com/5e00c0007f59595fe1...5572bfb23c 21:54
timotimo LOL
that graph is precious 21:55
geekosaur heh
samcv think i've almost fixed the problem of synthetics changing under concatenation. utf8-c8 synths that is 22:17
\o/ i got it 22:19
jnthn \o/ 22:20
samcv++
samcv so i added an option to the iterator which iterates a single grapheme, and had an option to pass back utf8 c8 synthetics 22:21
also going to have re_nfg do the same thing as well. even though that wasn't causing this specific problem. i could see it occuring there too 22:22
the normalizer seems to leave them alone. though ideally maybe we'd have a fast path for utf8c8 synths? dunno 22:24
jnthn Sounds wise
samcv though it working is much more important atm
nobody wants their utf8c8 strings to become normal ones
and i'll leave MVM_string_compare the way it is. otherwise i guess utfc8 synths would sort in the allocated order rather than a consistent order 22:25
jnthn, and we want .codes to give 1 code per utfc8 synth or no? 22:27
jnthn I don't care much about that. 22:29
If it does that's nice I guess
samcv i just need to change a 0 to a 1 22:30
and it will do that
jnthn oh
Then OK ;)
samcv ok :)
jnthn, need to decide how i want utf8c8 synths to sort in the collation algorithm hm 22:36
maybe something based on their number. and sort it as Unassigned
something to think about
jnthn Indeed; don't have anything useful to suggest really... 23:10
Sleep time o/
japhb Sleep well, jnthn
23:50 AlexDaniel joined