00:02 ilbot3 joined
jnthn timotimo: OK, go for it. :) 00:06
00:07 dalek joined, tokuhirom joined, rurban joined
jnthn Guess the commit message for the callback return values got lost :/ 00:08
timotimo i was wondering
jnthn Was github.com/MoarVM/MoarVM/commit/e6...a6554ddf64 anyways 00:09
00:10 _sri joined, FROGGS_ joined 00:11 hoelzro joined
timotimo how exactly do i build zavolaj for moar? with uf? 00:13
ufo?
00:13 tadzik joined
jnthn You could, though I've just been doing 00:14
prove --exec="perl6-m -Ilib" t
Rather than building it.
00:14 dalek joined
timotimo ah, right 00:16
jnthn Some of the C REPRs may be missing their repr data serialize functions yet too
timotimo getting the PREFIX command not found output
but all tests successfull 00:17
jnthn \o/ 00:19
timotimo but each of the tests outputs the warning about PREFIX :) 00:20
jnthn No idea what the PREFIX thingy is. Must be non-Windows-y :)
Since I don't se it at all here
00:22 tokuhirom joined
timotimo wait what. 00:22
stracing perl6-m gives me pages and pages and pages and pages and pages and pages and pages and pages of:
stat("/home/timo/perl6/rakudo/../install/languages/perl6/runtime/dynext/libperl6_ops_moar.so", {st_mode=S_IFREG|0644, st_size=305778, ...}) = 0
stat("/home/timo/perl6/rakudo/../install/languages/nqp/lib/dynext/libperl6_ops_moar.so", 0x7fff42b580e0) = -1 ENOENT (No such file or directory) 00:23
stat("/home/timo/perl6/rakudo/../install/languages/perl6/lib/dynext/libperl6_ops_moar.so", 0x7fff42b580e0) = -1 ENOENT (No such file or directory)
stat("/home/timo/perl6/rakudo/../install/languages/perl6/runtime/dynext/libperl6_ops_moar.so", {st_mode=S_IFREG|0644, st_size=305778, ...}) = 0
stat("/home/timo/perl6/rakudo/../install/languages/nqp/lib/dynext/libperl6_ops_moar.so", 0x7fff42b580e0) = -1 ENOENT (No such file or directory)
stat("/home/timo/perl6/rakudo/../install/languages/perl6/lib/dynext/libperl6_ops_moar.so", 0x7fff42b580e0) = -1 ENOENT (No such file or directory)
stat("/home/timo/perl6/rakudo/../install/languages/perl6/runtime/dynext/libperl6_ops_moar.so", {st_mode=S_IFREG|0644, st_size=305778, ...}) = 0
stat("/home/timo/perl6/rakudo/../install/languages/nqp/lib/dynext/libperl6_ops_moar.so", 0x7fff42b580e0) = -1 ENOENT (No such file or directory)
stat("/home/timo/perl6/rakudo/../install/languages/perl6/lib/dynext/libperl6_ops_moar.so", 0x7fff42b580e0) = -1 ENOENT (No such file or directory)
jnthn Wonder where those all come from o.O 00:24
Well, I need some rest. Will leave that little mystery (and probable speedup) for your hunting :)
'night 00:25
timotimo good night!
00:26 tokuhirom_ joined 00:30 rurban joined 00:37 _sri joined
timotimo "c_line" => "gcc -c -fPIC -o 01-argless.o -O1 -DNDEBUG -g3 -D_REENTRANT -D_FILE_OFFSET_BITS=64 -fPIC t/01-argless.c" 00:44
"l_line" => "gcc -shared -fPIC -O1 -DNDEBUG -g3 -Wl,-rpath,\$(PREFIX)/lib -lm -lpthread -lrt -ldl -o 01-arglesslib.so 01-argless.o"
01:12 MadHatter1987 joined 01:45 hoelzro joined 01:52 _sri joined 03:00 colomon joined 04:29 ggoebel11114 joined 04:41 ggoebel11115 joined
dalek arVM: fe23b59 | jimmy++ | / (2 files):
Restore using linenoise
04:56
TimToady I get millions of > now :/ 05:08
JimmyZ you didn't update linenoise 05:09
TimToady it said "Fetching submodule 3rdparty/linenoise 05:10
JimmyZ try 'git clean -xdf'? 05:13
I reproduced the bug and fixed it by set STDIN to block mode 05:15
TimToady still fails after recompiling moarvm and nom; does nqp have to be recompiled? 05:20
JimmyZ hmm, Could you `cd 3rdparty/linenoise && git log` to make sure it's the newest version? 05:21
only needs to recompile moarvm 05:23
and make install
TimToady has your patch 05:25
have completely cleaned/recompiled all of moarvm/nqp/nom, still fails 05:26
is it supposed to install any kind of library? it only installs a .h 05:28
or is it already linked into moarvm 05:29
JimmyZ it linked into moarvm
TimToady ok, I see the liblinenoise.a compiled 05:30
so I think it's just not working here 05:31
JimmyZ Could you help me gdb nqp? set breakpoint to : b 3rdparty\linenoise\linenoise.c:422
TimToady doesn't break, just spews > 05:34
JimmyZ yeah, I want to know what's there in line 422 05:36
TimToady it says I don't know what that is, do you want to set breakpoint on shared library
so it's probably not finding it
JimmyZ that's not a share lib 05:37
TimToady well, it's not finding it
JimmyZ hmm
TimToady that's: gdb /home/larry/nom/install/bin/moar 05:38
then run nqp.moarvm
and that's presumably the moar that was installed, lemme double check
I may have lost my prefix somewhere 05:39
\o/ 05:40
that was it
was installing it into nqp's install dir instead of nom's 05:41
works now, JimmyZ++
JimmyZ great
TimToady thanks!
JimmyZ You can input things and press ctrl+r to search it, after ctrl+r, you can press tab to continue searching 05:44
something different from lib-readline :P
and works on widnows also
windows
06:22 vincent22 joined
nwc10 jnthn: "nearly" works on "my" machine - valgrind and ASAN spot a use-after free in the callback test: paste.scsys.co.uk/325393 07:43
ooh, and an optimised build on (at least one) x86 system didn't like 05
oh, the non-optimised build on the other x86 system was unhappy too 07:44
same 'long' problem as yesterday
07:59 FROGGS joined
nwc10 jnthn: the problem is the second free() here: 08:05
/* Clean up. */
free(args);
free(cs);
is subsequently read by this:
if (ctx->callsite->has_flattening) {
er, memory freed by that is read later by the other
I can't figure out how to fix it 08:22
08:47 colors joined 08:55 woolfy joined
nwc10 OK, only works on "my" machine if it's little endian 08:55
Unhandled exception: Bytecode validation error at offset 0, instruction 0:
invalid extension opcode 40704 - should be less than 1024
that's on a power7 machine running Fedora 08:56
this is probably not today's problem
09:17 woolfy joined 10:22 lizmat joined 10:27 lizmat joined 10:36 lizmat joined
jnthn nwc10: Probably I shoulda thought to hang the callsite off the callback cache. That'd also mean we can compute it once and re-use it... 10:51
Wil look at it in a little bit.
And yes, BE will be broken until we write a smallish patch to endian convert the bytecode on first invocatin. 10:52
FROGGS does that mean I can't compile to a CD-R? :P 10:53
jnthn You can compile to anything if you write the porting patches :P 10:55
JimmyZ jnthn: I restored linenoise... 10:57
jnthn yes, noticed... 10:58
FROGGS .oO( don't talk like that about Perl! )
jnthn :D 10:59
heh, I'd never considered the amusement of a VM for a Perl depending on linenoise :)
jnthn trying the update here 11:00
FROGGS :o)
JimmyZ well, there is a lua version for linenoise, we can write a Perl6 one too by using nativecall ... 11:01
github.com/fperrad/ljlinenoise/blo...enoise.lua FYI :P 11:09
jnthn JimmyZ: Seems to work for me. 11:14
JimmyZ \o
timotimo o/ 11:30
jnthn hi timotimo 11:31
JimmyZ Hello, moarer
timotimo "moarons"? 11:32
JimmyZ moarning
11:42 lizmat joined, woolfy joined, dalek joined
timotimo it seems like the pages and pages of stats for the perl6_ops_moar were caused by something in nativecall 11:48
maybe some result of some temporary hack
so no easy wins to be had there
12:39 vincent22 joined
dalek arVM: f55b8ed | jnthn++ | src/core/nativecall. (2 files):
Build and cache callsite once per callback.

Saves per-callback overhead, but also means lifetime of it is righter, hopefully avoiding referencing unused memory.
13:07
jnthn nwc10: That should fix your SEGV 13:08
uh, or my SEGV
Or valgrind's complaint
Or whatever :)
JimmyZ jnthn: line CArray.c:88, Did it miss else if (repr_data->elem_kind == MVM_CARRAY_ELEM_KIND_STRING) ? 13:39
hmm, looks like the comments is wrong-ish 13:47
13:58 tgt joined
nwc10 tests 14:09
jnthn: valgrind happy for that test. ASAN build not yet there 14:18
jnthn ok
nwc10 jnthn: ASAN hapy with all 8 tests 14:23
jnthn: "righter" ?? - where was you drug up? :-) 14:24
jnthn nwc10: We never reclaim the callback cache entries at present. 14:25
nwc10 so the "cache" grows without limits until process exit? 14:26
and gotcha - it's better, but not "best" yet.
jnthn nwc10: So in the (unlikely) event you are eval'ing lots of callback routines...
...then yeah, you leak.
That's a pretty odd thing to be doing though :)
nwc10 valgrind still grumps about this: 14:30
t/05-arrays.t .......... 1/26 ==14553== Conditional jump or move depends on uninitialised value(s)
==14553== at 0x4F7CD4F: MVM_nativecall_make_cpointer (nativecall.c:171)
==14553== by 0x4FBBC43: make_wrapper (CArray.c:209)
I think that it's the test for an uninitialised pointer 14:31
jnthn Yeah, I think so 14:36
14:36 zakharyas joined
nwc10 valgrind happy with all 8 14:39
jnthn hehe...with pre-comp and --jobs=6 I can run the NativeCall tests in 2s on Moar :) 14:44
JimmyZ nmake compile is a pain when you edit a .h file 14:45
dalek arVM: ff01095 | jnthn++ | src/6model/reprs/C (4 files):
Implement missing deserialize_stable_size funcs.

With this, pre-compiling NativeCall now works.
jnthn JimmyZ: Yes, nmake is too stupid to support parallel builds :/ 14:46
JimmyZ hopes someone will split moar.h file
14:47 woolfy joined
jnthn Very much doubt that will happen. 14:48
It's not like a non-parallel build takes long.
JimmyZ gerdr said about it...
jnthn Especially as we're using link time code generation.
So much of the cost is there. 14:49
15:07 woolfy joined 15:10 brrt joined
brrt hi #moarvm 15:10
JimmyZ hello
15:11 lizmat joined
brrt 88 commits in what, 3 days? moarvm goes fast 15:12
jnthn It's due to our use of nuclear power. 15:13
timotimo it does, aye
jnthn
.oO( That's what they meant by "atomic commits", right? )
15:15
hoelzro ba-dum tssssh 15:17
15:20 brrt joined
brrt unrelated aside - actors are basically what objects could've been if people had taken 'message passing' seriously from the start 15:28
JimmyZ brrt: you know akka? 15:37
16:11 woolfy joined 16:16 brrt joined
TimToady has never bothered to parallelize any of his makes because he has only two cores on his ancient laptop, and wants to save one core for doing other things while he's compiling :) 16:27
and does irclog.perlgeek.de/moarvm/2014-03-15#i_8440520 mean we're planning to always include lua now? :) 16:29
jnthn TimToady: No, it was just pointing out lua had a binding to liblinenoise and we could potentially get at it the same way (through native calling) rather than making Moar itself aware of it. 16:30
TimToady oic <-- channeling diakopter++ 16:32
it's obviously still too early in the morning, since I'm considering whether we should always embed lue++ as our resident AI 16:37
which would explain the reticence to reveal his True Name :)
because then we could unplug him 16:38
lizmat wonders how dangerous it is to channel diakopter++ this early in the morning 16:41
japhb__ lizmat: Safer than at midnight? 16:49
lizmat ah, probably, yes :-) 16:50
brrt wonders if moarvm doesn't have an unwieldily-sized opcode library for JITTING 16:52
in other words 16:53
maybe we should generate bytecode from a different IR than from moarvm opcodes
jnthn brrt: No, you just JIT things that contain ops you know how to JIT. 16:54
brrt: JIT should be frame level anyway.
brrt how large is a frame level?
TimToady about the same size as a frame, so maybe about as big as a house? 16:55
jnthn Method/sub/non-inlined block.
brrt right 16:56
brrt is thinking a bit
i don't think i agree entirely 16:57
that is to say, i think the biggest gains of JIT-ing in a very-high-level language such as p6 will be due to making routine calls faster 16:58
i.e. p6 has rather complex parameter binding semantics iirc
japhb__ brrt: Many opcodes for same-size functionality space is just another way of providing information to the JIT. It's when you have many opcodes that sprawl over a much larger functionality space that it gets to be painfully more work, I should think. 16:59
jnthn Yeah, though the pre-JIT specializer work will help a lot on those too. And JIT can take it a step further...
brrt but for routines that have simple parameters or that are allways called in the same manner (from a certain site) you'd want to optimise that to as simple as possible
good point japhb__ :-)
jnthn Ah, I was unclear in what I wrote, and now see what you meant.
I wasn't saying we shouldn't do inter-procedural opts, inlining, etc. 17:00
Just that we shouldn't have to be able to JIT every single op used in an entire compilation unit in order to JIT at all.
brrt i agree
but i'm not sure the bytecode format is a good 'starting point' for a JIT compiler :-) 17:01
TimToady
.oO(All ops are equal, but some are more equal than others.)
brrt i believe - totally unsure - the hotspot compiler does a form of 'decompiling' before JIT-ing
jnthn Right, nor is it for any kind of optimization, which is why the stuff I've been working on locally builds a CFG...
With instruction nodes, etc. 17:02
brrt and v8 is said to use the original source
ok i see 17:03
jnthn Which should be in SSA form also, which should help further.
brrt uhuh
brrt is only now reading the 'dragon book'
jnthn The bytecode specializer will produce bytecode with some non-userspace-accessible instruction codes based on "proofs" it can do with runtime info. I suspect a similar approach can be used in order to take things apart or re-structure them for JITting. 17:05
(At the tree level.)
brrt what bytecode specializer do you refer too? the one for moarvm-bytecode or for jit-opcode? can i read the source? :-) 17:06
jnthn brrt: The thing that's still mostly in my head, that I promise to turn into code as soon as we've got the Moar star out of the door :) 17:07
brrt: But basically, it will 1) take hot bytecode, 2) build an SSA data structure, 3) in conjunction with runtime-known stuff, produce specialized bytecode from it, and 4) turn it back into improve bytecode, registering what we assumed so we can undo it if things change. 17:09
*improved 17:10
brrt ok understood
thats still mvm-level bytecode isn't it?
again, learning from v8, it is said to use the original source + runtime information for creating specialised (native) bytecode 17:11
jnthn yes, mvm-level 17:12
brrt which is possible because memory is cheap and javascript programs are small
ok, so in that case the JIT could use some / many of the same mechanisms but not the ultimate bytecode generation
jnthn Yes, that was my design idea. :)
brrt then i understand it :-)
interesting 17:13
jnthn One reason we have a bunch of ops is to try and keep the semantic information to let us do a good job of optimizing without having source-level knowledge.
brrt ok, why don't you want source-level knowledge?
jnthn It leads to a rather tight compiler/runtime coupling.
Which if you've v8 and your language is very stable is fine. 17:14
brrt that is true, i guess
jnthn *you're
Also, JavaScript is rather smaller than Perl 6 :)
brrt also true
brrt is, by the way, a bit of angry about the 'wat' video that keeps coming up 17:15
yeah javascript is a bit over-dwimmy wrt comparisons
many languages do the same
nobody / too few people gives java a hard time about == meaning identity comparison for objects 17:16
which is just as unintuitive
jnthn I think the issue there is that you can either have static types and overload operators with different semantics, or give operators one semantic and have them coerce types freely, but the multiple semantics and automatic coercion mix tends to lead to more surprises. 17:17
The == thing in Java is a mess. 17:18
"foo" == someString // that's a reference comp, wtf. :/
brrt precisely :-)
TimToady you must surprise Some of the people All of the Things!
jnthn Every single Java program I write ends up with that bug at some point. Thankfully I don't write many of them :) 17:19
brrt equality is a difficult problem - ask frege
:-)
TimToady or orwell
brrt don't know what orwell has written about it
TimToady some of the things he writes about it are more equal than others 17:20
brrt oh i see :-) animal farm
what confuses me most is that there are so many different semantics 17:26
:-) 17:27
17:44 woolfy left
brrt dining 17:53
masak oh, I know Frege had conceptual problems in his works, but I didn't know they related somehow to equality. 17:54
I know category theory has three different notions of it, though, on different levels.
18:17 FROGGS joined
lue TimToady: not like I've never put my name anywhere, I just don't like websites asking for it when it seems unnecessary :P 18:29
TimToady lue: but does that indicate Natural Intelligence or Artificial Intelligence? :) 19:25
lue :) 19:26
19:27 zakharyas joined
TimToady if I were an AI, I'd put out a fake real name as bait, to see who was coming after me :) 19:27
as they say, they absence of smoke proves the fire is carefully hidden :) 19:29
*the
TimToady's Inequality: For every secret, there are many unequal and not-quite-opposite conspiracy theories. 19:32
lue
.oO(The teapot is actually a government espresso machine!)
timotimo jnthn: did you look at the output from $l_line? 19:54
"l_line" => "gcc -shared -fPIC -O1 -DNDEBUG -g3 -Wl,-rpath,\$(PREFIX)/lib -lm -lpthread -lrt -ldl -o 01-arglesslib.so 01-argless.o" 19:57
the \$(PREFIX) arguably should have been expanded when writing this string to wherever it is 19:58
well, they ought to be expanded by *something* at *some* point 20:00
in parrot's $*VM these variables seem to be expanded 20:01
build systems *shudder* 20:02
now i'm wondering by what heuristic to put self.intern calls into the actions 20:09
jnthn timotimo: I think we could just s/// it out 20:12
timotimo mhh 20:16
hm. in NQP, will ~$foo give the identical object back if it's already a string? 20:20
jnthn It'll probably unbox it 20:40
timotimo unbox and rebox?
so same MVMString, but different P6str? 20:41
jnthn If you manage to ~ in a context that needs to, yeah
~ in NQP is "give me a str"
timotimo yeah
i still segfault :\ 20:42
jnthn What backend are you on? Try it on one that is less explodey over null...
(if you're using Moar)
timotimo moar, yeah 20:43
even worse, when i stash my changes and try to rebuild, it doesn't fail any more
jnthn well, then your changes are to blame, no? :) 20:48
timotimo yes
21:21 cognominal joined 21:23 cognominal joined
dalek Heuristic branch merge: pushed 84 commits to MoarVM/moar-conc by jnthn 22:20
22:21 dalek joined
timotimo ooooh 22:30
jnthn Just updating the branch. :)
TimToady we wants it, my precioussss 22:31
jnthn Turns out I'd rather face a parallel GC bug than a Makefile split job :P
timotimo :D 23:08
dalek arVM/moar-conc: 6ec25c5 | jnthn++ | src/ (4 files):
Eliminate the new_child mechanism.

Causes a deadlock, couldn't figure out what it was trying to deal with, didn't actually work like it said anyway, and spawning a thread triggering an immediate GC run seems less than ideal.
23:31
arVM/moar-conc: f9ac15d | jnthn++ | src/gc/collect.c:
Move corruption check to after work pass.

If the work belongs to another thread, it makes no sense to check.
MoarVM/moar-conc: ce2ee48 | jnthn++ | src/gc/collect.c:
jnthn The real, nasty bug I'm currently hunting is that some of the workload just gets dropped. 23:32
Don't think I'll find it tonight, but I know where to look now, at least. 23:37