github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 21 August 2013.
00:19 FROGGS joined 01:28 FROGGS_ joined 01:31 jnap joined
JimmyZ Good morning 01:55
grondilu: linenoise is a submodule
.tell grondilu linenoise is a submodule
yoleaux JimmyZ: I'll pass your message to grondilu.
grondilu ok but 3rparty/linenoise is empty. Shouldn't it include stuff? 02:02
yoleaux 01:55Z <JimmyZ> grondilu: linenoise is a submodule
grondilu (well, it's empty in master anyway, I guess it's supposed to link to github.com/MoarVM/linenoise or something?) 02:04
JimmyZ grondilu: yes, see book.git-scm.com/5_submodules.html 02:05
02:10 ggoebel joined
diakopter JimmyZ: you should still put a note about it in the main readme 02:12
grondilu runs git submodule update, but nothing happens. He must have missed something. 02:14
JimmyZ git submodule init
grondilu ok, that does work. 02:15
02:19 FROGGS joined
JimmyZ diakopter: my crappy english ... 02:27
dalek arVM: cc56034 | jimmy++ | 3rdparty/linenoise:
Pull in latest Linenoise
03:13
05:30 FROGGS joined
dalek Heuristic branch merge: pushed 20 commits to MoarVM/dll by gerdr 06:00
arVM: 6d4f765 | (Gerhard R)++ | build/Makefile.in:
Auto-update submodules when building
06:14
JimmyZ not_gerd: ar: 3rdparty/linenoise/*.o: No such file or directory 06:26
I'm curious why it worked before
dalek arVM: 9fd2429 | (Gerhard R)++ | build/Makefile.in:
Avoid rebuilding everything due to submodule update.

The factoring isn't right yet, but it should work well enough for now.
06:29
JimmyZ not_gerd: nerver mind, it works again, I don't why 06:34
diakopter .tell jnthn give me another hour or two from now to finish; pushing progress in an hour or so 06:49
yoleaux diakopter: I'll pass your message to jnthn.
dalek arVM: bf4f577 | (Gerhard R)++ | build/Makefile.in:
Revert "Avoid rebuilding everything due to submodule update."

This reverts commit 9fd24292c60c71824d9c5eda424efa4c73516a9d.
06:59
arVM: 708369d | (Gerhard R)++ | build/Makefile.in:
Revert "Auto-update submodules when building"

This reverts commit 6d4f765bc0b56bafd7132b3b9c384dd9dd8d4b4a.
I'm not smart enough to make it work for all edge cases this early in the morning. 4415e31 | (Gerhard R)++ | Configure.pl: Let Configure.pl update submodules.
It's not perfect, but I failed to come up with anything better.
07:01 not_gerd joined
not_gerd o/ 07:01
not_gerd--
4 bogus commits
"hey, this looks like a simple fix - let's tryit and push" 07:02
JimmyZ good morning, not_gerd 07:48
07:51 FROGGS joined
diakopter o\\ 07:52
FROGGS o/ 07:53
not_gerd /o\\
FROGGS \\o/
not_gerd this submodule stuff is tricky 07:54
dalek arVM/serialize: c46bed7 | diakopter++ | src/ (3 files):
serialization wip. DOES NOT BUILD. about 1/3 ported from parrot-ese to moar-isms...
07:55
FROGGS coool! 07:58
diakopter++
diakopter it occurs to me that those array getters could actually need to pull from inlined/native int/num arrays
we'll see 08:01
github.com/MoarVM/MoarVM/commit/c4...nt-3936131 08:02
^ please see note
could someone do that little chore
08:03 woolfy joined
diakopter not_gerd++ thanks for fixing that initialization missing 08:05
I was indeed seeing sporadic wrong instruction numbers
FROGGS diakopter: I dont understand the task "could someone back out the changes below here for me? (accidental replace-all case-insensitive) oops." 08:09
diakopter the places below that line where I replaced s/string/MVMString/ig 08:10
reverse the change :)
FROGGS ahh 08:11
08:11 grondilu joined
diakopter .ask jnthn take a look at github.com/MoarVM/MoarVM/commit/c4...nt-3936143 08:12
yoleaux diakopter: I'll pass your message to jnthn.
dalek arVM/serialize: 2da07e1 | (Tobias Leich)++ | src/6model/serialization.c:
s/MVMString/string/ as requested by github.com/MoarVM/MoarVM/commit/c4...nt-3936131
08:15
diakopter FROGGS: thank you :) 08:16
FROGGS you're welcome :o) 08:17
dalek arVM: 9c96297 | (Gerhard R)++ | src/core/ (3 files):
Fix some const-related warnings
08:18
FROGGS diakopter: with this patch it goes a little further, is it sane? gist.github.com/FROGGS/5221e53f8f53d60603e0 08:33
not_gerd FROGGS: you need to use calloc() to allocate zeroed memory 08:34
it shoudn not matter assuming we manually initialize all fields of writer, though 08:37
(which it looks like we do) 08:38
FROGGS k 08:42
brb
feel free to patch it :o)
(branch serialize that is)
dalek arVM/dll: b6af8ff | jimmy++ | 3rdparty/linenoise:
Pull in latest Linenoise
09:02
arVM/dll: f9ef1a6 | (Gerhard R)++ | Configure.pl:
Let Configure.pl update submodules.

It's not perfect, but I failed to come up with anything better.
arVM/dll: 633136b | (Gerhard R)++ | / (3 files):
More stuff we need to eventually build a shared lib
jnthn o/ 09:06
yoleaux 06:49Z <diakopter> jnthn: give me another hour or two from now to finish; pushing progress in an hour or so
08:12Z <diakopter> jnthn: take a look at github.com/MoarVM/MoarVM/commit/c4...nt-3936143
BabsSeed Hey all, got pretty much everything I needed to get done, done. Now I have time to get properly involved. 09:07
jnthn .tell diakopter hash needs rooting in github.com/MoarVM/MoarVM/commit/c4...181#L1R368 09:08
yoleaux jnthn: I'll pass your message to diakopter.
jnthn
.oO( wtf is yol water? )
09:09
not_gerd jnthn: is it OK if I periodically merge the dll branch into master so it actually gets tested on some other systems? 09:11
(ans so people can start annotating functions as public/private)
* and
jnthn not_gerd: yes, provided you have a reasonable level of confidence it won't break the build.
dalek arVM: cd79a93 | (Gerhard R)++ | / (3 files):
Start logic for shared libs as well as various cleanups
09:20
arVM: d01c00b | (Gerhard R)++ | src/moarvm.h:
Add MVM_PUBLIC/MVM_PRIVATE with dummy condition for now

Add missing s/CMDOUT/NOOUT/
not_gerd BabsSeed: welcome back
09:20 dalek joined
not_gerd BabsSeed: testing the build on non-windows systems would be appreciated 09:20
if you're looking for something slightly more interesting, the serialize branch needs to be made to compile 09:21
JimmyZ linking libmoarvm.a 09:22
linking moarvm
gcc: libmoarvm.a: No such file or directory
BabsSeed not_gerd: Will test later, is it the stable or a specific pull req? 09:23
JimmyZ INK : fatal error LNK1104: 09:26
NMAKE : fatal error U1077:
jnthn JimmyZ: Hm, it build under MSVC just now for me, fwiw 09:27
JimmyZ *LINK
09:27 FROGGS joined
not_gerd JimmyZ: generated Makefile for the gcc fail? 09:29
JimmyZ not_gerd: yes 09:30
not_gerd JimmyZ: can I see it?
BabsSeed: I'm working in the dll branch right now, but will merge that into master from time to time 09:31
JimmyZ hmm, MSVC:
linenoise.lib(linenoise.obj) : warning LNK4204:
got a moarvm.exe though
not_gerd JimmyZ: that's probably some race condition 09:32
from time to time, it doesn't pick up the debug information
remove linenoise.lib and nmake again and it'll probably work
JimmyZ good ,works 09:33
not_gerd JimmyZ: I don't see why building with gcc should fail :( 09:34
JimmyZ not_gerd: gist.github.com/zhuomingliang/6327131 09:36
ar rcs /out:libmoarvm.a 09:40
not_gerd JimmyZ: yes, that should be it
JimmyZ not_gerd: gist.github.com/zhuomingliang/6327152 another gist 09:42
dalek arVM: 895754b | (Gerhard R)++ | build/Makefile.in:
Fix incorrect use of hardcoded /out
not_gerd JimmyZ: ^^ that should have done it 09:43
JimmyZ ar rcs libmoarvm.a 09:44
works, not_gerd++
how to make shared build? 09:46
got it 09:47
not_gerd JimmyZ: doesn't work yet
JimmyZ I got a so
not_gerd well, the linux stuff might actually work 09:48
for MSVC, we need MVM_PUBLIC annotations
JimmyZ oh
microsoft are evil :P
not_gerd you actually can pass --shared on Windows - but it'll just rename the archive ;) 09:49
10:03 lizmat joined
dalek arVM: 6e2ea8e | (Gerhard R)++ | build/Makefile.in:
Provide clean, realclean and distclean targets.

Not as useful as it could be as MSVC will complain about missing debugging information when rebuilding after a clean.
10:06
arVM: f7613a0 | jnthn++ | / (8 files):
SC op cleanup, and add various missing ones.
10:13
arVM: a3c1711 | jnthn++ | nqp-cc/nqp-src/QASTNodes.nqp:
Sync QAST::Var node with latest.
10:23
arVM: 0b2eb68 | jnthn++ | nqp-cc/nqp-src/NQP.nqp:
Use correct setting, regex library.
10:25
11:00 not_gerd left 11:16 woolfy joined
dalek arVM: ab1ef8f | jnthn++ | src/6model/reprs/MVMContext.c:
Implement MVMContext.exists_key.
11:22
jnthn So many little pieces :) 11:25
11:37 lizmat joined
JimmyZ :-) 11:47
11:48 lizmat joined 12:01 not_gerd joined
not_gerd jnthn: github.com/perl6/nqp/blob/master/s...tion.c#L57 12:03
do these still make sence on MoarVM?
and where should they be cached?
* sense
JimmyZ not_gerd: these are pmc realted 12:05
not need for moarvm
iirc
jnthn not_gerd: No, they make no sense at all :) 12:06
not_gerd so anything that's not int/str/num is just a 6model object? 12:07
jnthn Yes
however, in places you'll need to look at a context ref
oops
at a REPR type
MVMContext being an example :) 12:08
JimmyZ wonders why "(op <unknown>, instr 0<unknown>" 12:22
why unknown :)
jnthn dunno :) 12:23
lizmat maybe something is missing 12:25
jnthn Most I'm just glad we have working-enough backtraces to quickly find the easy todos/bugs now :)
JimmyZ hmm, look like some bug in if %h -> $lib { } ..., and $lib isn't passed 12:37
jnthn Yeah 12:38
--no-regex-lib gets around that for now though
And gives the next interesting problem. :)
JimmyZ oh
jnthn But yes, do need to fix the if/unless code-gen :)
JimmyZ see it 12:39
dalek arVM/serialize: 26bafc3 | (Gerhard R)++ | src/6model/serialization.c:
Fix boring stuff in 6model/serialization.c
12:43
not_gerd more interisting bits will have to wait until I actually have the time to read some moarvm code 12:44
jnthn: should there be a MVM_repr_push_p() for arbitrary pointers? 12:51
converting an MVMSTable* to MVMObject* to store it of course works, but doesn't really feel right
jnthn um 12:52
You can't store an MVMSTable that way
They're not a kind of MVMObject. It'll segfault soon enough. :) 12:53
not_gerd jnthn: well, serialization.c does ;)
jnthn No, no
It pushes them into a PMC array :)
STables are the one thing in MoarVM that is GC-able yet isn't an MVMObject :)
The serialization context handles them differently as a result.
Best bet is just to keep a C array of them...
(The JVM port has a similar situation, fwiw.) 12:54
not_gerd so stables_list shouldn't be an MVMObject but some VM internal structure (possibly just an array we grow as necessary) 12:55
dalek arVM: 853d1ea | jnthn++ | src/6model/6model.c:
Add missing null check in istype.

Brings it in line with other impls.
arVM: 485abe7 | jnthn++ | src/6model/reprs/MVMIter.c:
Support iterating MVMContext.
jnthn not_gerd: yes 12:56
not_gerd jnthn: what do you think about keeping such things power-of-2 sized (so we don't need to keep an explicit size)? 12:57
if the array's load hits a power of 2, double size
or should that grow linerly with some fixed increment?
*linearly
jnthn doubling the size is probably a fine way to grow it. These lists are only as long as there are types declared in the source file 12:58
not_gerd the same applies to the other _list members of MVMSerializationWriter? 13:00
not_gerd should probably just go look how the JVM does it 13:02
jnthn not_gerd: objects and codes are certainly MVMObject 13:03
contexts probably not 13:04
BabsSeed not_gerd: I'm installing Ubuntu on my desktop right now, it'll compile stuff a lot faster than that VPS.
dalek arVM: 0045428 | jnthn++ | src/core/coerce.c:
Fix how radix returns results.
not_gerd jnthn: but should they be kept in a 6model-based listy thing that we access via repr_push? 13:05
or ust some glorified C array that gros as needed?
*just
BabsSeed Are there any API docs for moarvm or is the source the best documentation? :)
jnthn No API docs really, no. Some design docs in docs/ :) 13:06
JimmyZ and in nqp/docs also
BabsSeed jnthn: Which part of the project is most important to document? That's something I could do.
I get a lot of time on buses/planes without net access. :P 13:07
not_gerd BabsSeed: you can cross-reference github.com/perl6/nqp/tree/master/src/vm to see how other backends do things
JimmyZ BabsSeed: some docs are in nqp/docs :)
they are important 13:08
jnthn BabsSeed: Good question. I think the ops are currently undocumented...though may be more worthwhile documenting nqp:: ops in general... 13:09
not_gerd jnthn: on JVM, the SerializationWriter apparently doesn't keep its own list of STables 13:10
jnthn BabsSeed: Perhaps most useful could be an overview of what can be found where in the source tree, though. That's probably one of the more useful things to have for new contributors...
not_gerd jnthn: instead, it uses sc.root_stables
jnthn not_gerd: Oh...
not_gerd: heh. On Parrot... 13:11
writer->stables_list = stables;
Where stables is
GETATTR_SerializationContext_root_stables(interp, sc, stables);
:)
So it's just a pointer to the list from the SC :)
So, two impls so far say it's safe to use the one inside the SC. I can't think of any reason why it wouldn't be OK on Moar too. So I'd do that. 13:12
not_gerd so on Parrot we just cache the value to avoid going through Parrot API ;) 13:13
if I remember my parrot correctly, the GETATTR_* stuff doesn't have overhead
jnthn Yeah, just a pain to type:)
Aww. Well, that brings the fun to an end. 13:15
The next segfault happens in the GC. 13:16
JimmyZ :P
GC will be a pain
jnthn Well, what's especially odd is it's one of the permroots that's doing it. 13:19
JimmyZ guess jnthn++ fixed "MVMArray: atpos expected num register"
jnthn aye 13:20
dalek arVM: 6b4c98c | jnthn++ | src/ (2 files):
Simplification.
13:21
not_gerd jnthn: should I add MVM_sc_push_stable() to avoid MVM_sc_set_stable(, ...->num_stables) ?
jnthn not_gerd: Sounds sane. 13:24
dalek arVM/serialize: 43c534c | (Gerhard R)++ | src/6model/sc.c:
Implement MVM_sc_push_stable()
13:35
arVM/serialize: 95f02b1 | (Gerhard R)++ | src/6model/s (3 files):
Remove stables_list from MVMSerializationWriter and fix one of its uses
not_gerd errands&
13:41 BenGoldberg joined
jnthn Seems the GC issue is not the GC's fault, but rather than scan_registers sees a bogus arg_flags after a flattening. 13:46
13:48 JimmyZ_ joined
JimmyZ_ the first impression to me is that something wrong was added in worklist 13:49
jnthn yes, exactly
It's added in scan_registers, in the ->params bit at the end 13:50
An arg :compunit(1) ends up with the native int 1 being considered an object.
Which is where the 1 added to the worklist comes from.
oh, hmm... 13:56
diakopter ?
yoleaux 09:08Z <jnthn> diakopter: hash needs rooting in github.com/MoarVM/MoarVM/commit/c4...181#L1R368
jnthn I think it may be scanning making a bad assumption actually 13:57
14:00 JimmyZ joined 14:02 JimmyZ joined
JimmyZ exit 14:02
14:03 JimmyZ joined
jnthn Fixed it. 14:04
dalek arVM: bdba306 | jnthn++ | src/gc/roots.c:
Handle names properly when marking params.
14:05
diakopter .tell not_gerd not_gerd++ awesome at reading my mind on what to fix in the s branch
yoleaux diakopter: I'll pass your message to not_gerd.
dalek arVM: 24a67d9 | jnthn++ | src/gc/orchestrate.c:
Oops, accidentally commited debugging turn-on.
14:07
jnthn Hm. Next bug is an interesting one... 14:11
s/interesting/silly/ :) 14:20
JimmyZ hmm, looks like last op is always unknown 14:22
jnthn ?
JimmyZ op <unknown>, instr 0<unknown>
jnthn Oh, in backtrace
yeah, not sure what that's about 14:23
JimmyZ always on the top one
jnthn I think we'll strip those bits of info without a --verbose-backtrace or so
JimmyZ e
jnthn They're mostly noise to me, though diakopter++ likes to have a way to get at them.
dalek arVM: 4416cfd | jnthn++ | src/6model/reprs/P6opaque.c:
Unconfuse P6opaque REPR compose.

Wrongly used attribute index at current MRO level in places that needed slot offset.
14:25
JimmyZ if you look it , all are known, except the top one
;) 14:26
jnthn aye
Seems we now can parse and build AST for -e "say('Hello, world')"
JimmyZ nice
jnthn --target=ast might work, except the code-gen for nqp::for doesn't install exception handlers for the control exceptions yet. D'oh. ) 14:27
And we can't get beyond there 'cus the code-gen phase isn't wired up yet.
Anyway, self-host managing "hello world" seems somewhat in reach in the coming days...
JimmyZ I got Segmentation fault (core dumped) 14:28
jnthn Right.
Same.
But if you --stagestats, the (corrupted...) output shows you that we completed stage ast.
JimmyZ see it 14:29
jnthn Which means the parsing worked out :)
Got some other stuff I need to do now. May have moar tuits later this evening.
JimmyZ jnthn++ 14:30
diakopter jnthn: unfortunately it seems I won't be able to work on the s branch until after you're asleep again today 15:53
jnthn diakopter: I'm not blocking on it :)
diakopter but I'm estimating there's another 2 hours on the serialization.c and then another 2 hours on the reprs then another 2 hours testing 15:54
jnthn Testing is easy: pass t/serialization/*.t :)
diakopter o
2 hours fixing, then
jnthn :D 15:55
JimmyZ I think I got how to do sockect 15:56
15:56 not_gerd joined
not_gerd o/ 15:56
yoleaux 14:05Z <diakopter> not_gerd: not_gerd++ awesome at reading my mind on what to fix in the s branch
not_gerd I think caching the stables in the writer might have been a good idea after all 15:57
MVMSerializationContextBody is held at an additional level of indirection
so Ill probably undo that change 15:58
JimmyZ you avoids base64 decode?
not_gerd a bit more stuff on serialization.c should be incoming shortly
diakopter I know I was using the wrong operations on what jnthn converted from a hll array to a c array 15:59
maybe you fixed that already
not_gerd diakopter: not yet, but I'll chip away at some of it (slowly ;))
and possibly with false starts (see above)
TimToady we don't allow false starts here 16:01
experiments that reduce the size of the solution space are okay though :)
jnthn START False; # no, we don't any more... :)
JimmyZ jnthn: I found by using struct { uv_tcp_t *handle, void *data } can got the read data in cb 16:04
not_gerd crap - neeed to do some whitespace wrangling :( 16:17
JimmyZ Good night 16:28
FROGGS gnight JimmyZ
jnthn 'night 16:29
dalek arVM/serialize: ef6a5a8 | (Gerhard R)++ | src/6model/serialization. (2 files):
Re-introduce stables_list to MVMSerializationWriter and use it
16:42
arVM/serialize: ef7c356 | (Gerhard R)++ | src/6model/serialization.c:
Minor fixes to 6model/serialization.c
16:52 woolfy left
dalek Heuristic branch merge: pushed 23 commits to MoarVM/dll by gerdr 19:11
not_gerd ^ that has made sharedlibraries mostly work 19:13
export annotations are of course still missing 19:14
also, for some reason linenoise uses debug information
apparently, that can be caused by library ordering or some such 19:23
dalek arVM/dll: cad6912 | (Gerhard R)++ | / (2 files):
Remove auxiliary files only when realcleaning
19:49
arVM/dll: 44948f5 | (Gerhard R)++ | src/core/exceptions.h:
Make MVM_crash_on_error() public
19:57
arVM: b9e9035 | jnthn++ | nqp-cc/ (2 files):
Fix invoking QAST -> MAST stage.

Fails within it due to a NYI.
20:01
jnthn yays we're into the backend... 20:02
MVMCallCapture GC mark NYI # the next error :) 20:04
nwc10 what do you mean "into the backend". Or does that take too much explaining of stuff? Is it that the NQP frontend now compiles? So the code that creates ASTs works? 20:07
(But not yet the code that takes ASTs and makes bytecode"
er)
not_gerd jnthn: the dll branch is basically ready for merge 20:08
perl Configure.pl --shared should now work on windows
jnthn nwc10: I mean that the NQP self-host effort on Moar is at the point where the thing stopping say('hello world') working are taking the QAST tree and turning it into MoarVM bytecode and running it 20:11
nwc10: Meaning that self-host can parse that code and builds its AST 20:12
nwc10 ah OK good. So I think I did sort of understand
20:13 BenGoldberg joined
nwc10 and 20:14
jnthn++
jnthn um, ok, wtf... 20:18
FROGGS what's up? it loaded a java lib and is spamming the Python channel now?
jnthn no... 20:19
MoarVM complains of an args error
I look at the code and wonder...how the hell could that ever work...
FROGGS hehe
jnthn Quiz time! What should this code do:
class Foo {
method new(:$index) { say($index) }
}
Foo.new(2);
FROGGS *g* 20:20
it takes a positional and turns it into a named of course :o)
nwc10 can I phone a friend^WIRC bot?
jnthn It should be an error! 20:21
You passed one too many positional args.
FROGGS it should, yeah
jnthn On nqp-parrot...it prints 2 o.O
FROGGS ?
arnsholt Oh dear
jnthn yes, ? indeed
wtf
So of course, we have code that relies on this..."feature" :)
arnsholt That's what Common Lisp does, and I'd argue it's not a very good idea =)
jnthn OK, at least I don't have to go fix Moar's arg binder :P 20:22
not_gerd goes merging dll into master 20:23
actually, I'm doing a final test run, so stay tuned 20:24
the 4 failing string tests are expected? 20:30
dalek arVM: dee565b | jnthn++ | nqp-cc/src/QAST (2 files):
Fix some broken MAST::Local construction.
arVM: e036584 | jnthn++ | src/6model/reprs/MVMCallCapture.c:
Implement MVMCallCapture.gc_mark.
jnthn not_gerd: Well, I wouldn't say I expected them, but yeah, I get them too...
dalek arVM: 5b697df | (Gerhard R)++ | / (5 files):
Wire up shared library building
20:31
arVM: 42c17c7 | (Gerhard R)++ | / (2 files):
Remove auxiliary files only when realcleaning
arVM: 735d67c | (Gerhard R)++ | src/core/exceptions.h:
Make MVM_crash_on_error() public
jnthn not_gerd: Builds fine for me 20:41
not_gerd \\o/ 20:42
diakopter now that I think about it, that crash on error field needs to hang off of instance 20:48
instead of static
it was just a temp fix anyway 20:49
not_gerd as a rule of thumb, anything not constant should probably not be static
jnthn aye 20:50
diakopter right, it was jsut a temp hack
jnthn Next thing needed is giving nqp::for its exception handler support...but not got the energy for that today 20:51
not_gerd good night o/ 21:09
21:09 not_gerd left 21:16 lizmat joined 21:18 woolfy joined 21:22 lizmat joined 21:49 woolfy left
dalek Heuristic branch merge: pushed 39 commits to MoarVM/serialize by diakopter 23:01
diakopter ^ merging in master 23:02
23:07 eternaleye joined
jnthn sleep & 23:08