jnthn OK. We can hun the problems with linenoise, or readline, later 00:03
FROGGS yeah
dalek arVM: b63301e | jnthn++ | src/core/interp.c:
Workaround for readline interactive bug.

On some platforms, it spews endless prompts and never reads a line. This avoids the issue by turning it into a normal readline, which does lose the readline stuff, but is better than no REPL at all.
00:04
diakopter jnthn: I thought we had some custom patches on dyncall (and libuv for that matter) 00:05
jnthn diakopter: None on libuv
diakopter: Maybe some on dyncall
Well, certianly we have dyncall ones now 00:06
I put in the patch from Andy, but I did it on top of their latest
Sadly, their latest breaks stuff for us.
diakopter I thought we had lots and lots of mods
jnthn It's probably not a big deal to fix, but I don't have time for it now.
Well, we have lots and lots of build patches at least :)
FROGGS spectest looks good I think 00:15
jnthn Same here 00:17
OK, anything else to go into MoarVM pre-release? 00:18
timotimo hohum.
seccomp forbids the use of sbrk if you don't supply a filter
jnthn Hm :) 00:19
timotimo now i need to get the documentation for seccomp filters %) 00:20
FROGGS I dunno... I'd look into fixing this tomorrow when I got to it
jnthn FROGGS: "this"? 00:25
timotimo libseccom looks easy enough
FROGGS things*
<-- tired 00:26
dalek arVM: 6fabfa2 | Jonathan++ | tools/release.sh:
Add initial release script by moritz++.

With a small tweak.
00:30
timotimo er, what is exec >MANIFEST supposed to mean? o_O 00:31
wait
that redirects the output of the current shell into a file?
jnthn I didn't write it :P 00:32
moritz++ did :)
But yes, I presume that's what it does :)
timotimo holy fucking shit
that's awesome
perl6 needs this.
:P
(i know it already does)
dalek arVM: 8ba3c28 | jnthn++ | Configure.pl:
Don't try to update submodules if no .git.

Otherwise, Configure will explode in a release.
00:38
jnthn jnthn.net/MoarVM/MoarVM-2014.01-rc1.tar.gz 00:48
Please try to download and Configure and make ^
btyler build failure: gist.github.com/kanatohodets/b49fd...fb70a2426b 00:52
00:52 benabik joined
lee__ i see the same on OS X 00:52
btyler (I'm also on OSX) 00:53
lee__ should libdyncall_s.a be omitted from the tarball?
jnthn um...that's build output... 00:54
diakopter well if the clean misses it..
jnthn Well, but it shouldn't really happen 00:55
'cus it does git ls-files to make the manifest...
lee__ gist.github.com/leedo/666a43f884612ca4db7c 00:56
thats freshly extracted
jnthn How on earth... 00:58
They don't show up in the MANIFEST file, though? 00:59
lee__ hmm nope 01:02
jnthn I agree they're in the .tar.gz
lee__ must be something with that tar command 01:03
jnthn Yeah 01:05
perl -pe "s{^}{MoarVM-$VERSION/}" MANIFEST | tar zc -T - -f MoarVM-$VERSION.tar.gz 01:06
The first bit piped into tar doesn't mention the .a files
ohh 01:11
We're ending up with the entire directories of the submodules in the MANIFEST
01:20 jnap joined
timotimo hm. here's something i don't understand 01:20
i can nqp::getcomp the compiler and register my extops
how do i then go ahead and use these in the future in the same process?
can i have a .nqp file compiled to .moarvm that does the registration, use ThatModule from the other code file and immediately use the nqp::myextop calls? 01:21
or how would i get that to work? 01:22
er, i was mistaken, i don't have to use getcomp to do that 01:23
just use MASTNodes and then MAST::ExtOpRegistry.register_extop(...)
jnthn Well, but then you still need to map nqp:: ops to them 01:25
New RC coming up 01:26
bah, shoulda known something was up when the tarball was a couple of megs 01:27
up
18 megs
Now it's a couple of megs
timotimo hm. how do i go about mapping the nqp ops then? :\ 01:28
ah, for *that* i need the getcomp
jnthn See how Perl6::Ops does it 01:29
timotimo that's where i'm looking now. i just didn't look far enough down
does it make sense to supply "nqp" as the hll in the first field?
jnthn If you will call the ops from NQP, yes 01:30
You can also add them globally
add_core_op
Maybe not so sociable :)
timotimo hehe. 01:31
i used "add_hll_moarop_mapping", was that wrong?
ah, for that i don't supply the hll
that actually sounds nice.
but i do want add_core_moarop_mapping 01:32
jnthn yes, that's the one 01:34
timotimo how long are you going to stay online today? 01:37
i'm getting ever closer to an actually executable *thing*
this excites me :)
it does feel a bit boilerplatey to me
jnthn jnthn.net/MoarVM/MoarVM-2014.01-rc2.tar.gz 01:38
timotimo i have stuff i want to do in C. i wrap that in moarvm extops that i register from c land
then i register the ops with the QAST compiler
and then i register the ops with the operations
01:38 jnap joined
jnthn btyler, FROGGS, timotimo: Try RC2 if you have a moment. 01:38
timotimo: tbh, adding these things isn't really a very common thing to do. 01:39
timotimo: And keeping nqp and VMs at something of a distance is what means we can have one codebase and run on JVM/MoarVM/Parrot
timotimo that's true, yeah 01:40
i'll try rc2 real quick
dalek arVM: 517f0c2 | Jonathan++ | tools/release.sh:
Don't include submodule directories in MANIFEST
arVM: 516ceab | Jonathan++ | build/setup.pm:
Remove submodule-related git references in Makefile

While the clean instruction is perhaps helpful in some sense, it is not good for in a release, where there's no Git repo.
timotimo jnthn: how about shipping a few "hello moarvm!" .moarvm files with moarvm? :) 01:41
something braindead simple, that says "hello!" or something 01:42
i don't know how to make such a thing without dependencies on nqp, though
jnthn: it seems to build fine :) 01:43
jnthn: how does i debugs "failed to load library './secmoar_ops.so'"? :( 01:44
dalek arVM: 5d8f31e | Jonathan++ | build/Makefile.in:
Update make release target.
timotimo huh, it seems like it's trying to load MASTOps.moarvm 01:45
but i don't see that file anywhere
ah, ../nqp/MASTOps.moarvm
jnthn That file should be installed...
I'm not sure about the library loading issue, but maybe look at how Rakudo does it
We put the ops file in a dynext directory...wonder if that's significant.
diakopter what's sec for 01:46
timotimo gee, i hope not
diakopter: SECURE :)
(it uses seccomp to prevent malicious stuff from happening) 01:47
diakopter seccomp is the thing from the nsa?
dalek arVM: 9656fbd | jnthn++ | README.markdown:
Tweak a number in the README.
01:48
jnthn 'cus we know they're good at security... :)
diakopter selinux? 01:50
timotimo diakopter: no, seccomp 01:51
btyler jnthn: RC2 builds, tried using the release as a --prefix for nqp but it died on some path problem; I wiped out my existing MoarVM install/ dir and copied the release install/ into its place, nqp built and nqp-m fails 5 tests (related to file-ops, which I think is normal?)
timotimo jnthn: how do you feel about letting me add another little commit before we cut the commit?
btyler so seems good, I think
timotimo cut the release*
jnthn: i'd really like to put a fast path into the concat that uses memcpy instead of a for loop with get_codepoint_at if both strings have the same format 01:52
because now, anything that concatenates is basically horridly slow
and most things on the repl will be printed using concatenation
diakopter theyre not that slow on windows 01:53
bc it's much more optimized
timotimo right. but it's unbearable on linux
and people will want to look at our first release 01:54
and if it does silly things like that, they'll say "wtf are they smoking?"
jnthn btyler: Sounds good.
diakopter timotimo: I'm not sure any more people will say that than already have for 13 years 01:55
timotimo hm
jnthn True :)
Also, this is *not* a distribution release
It's the first Rakudo release that has some level of Moar support 01:56
diakopter not to mention there are plenty of other reasons to say that :)
jnthn There's a number of reasons not to trust it too much yet.
timotimo we won't publish moar support with this month's rakudo compiler?
jnthn We will
But that's a compiler release
It's distribution releases (Rakudo Star) that are explicitly end-user targetted. 01:57
And come with promises like "yes, it runs Panda", "yes, it has the debugger", "yes, you can use NativeCall", etc.
diakopter I've never understood how compiler users are less of end users than distribution users 01:58
timotimo what's the difference between _STRAND_DEPTH and STRAND_DEPTH?
diakopter one is lvalue
I think
timotimo ah, that makes sense
strand_depth is supposed to be 0 if it's not a rope, eh? 01:59
diakopter well it's never read in that case I think 02:00
or maybe it means something else
see MVMString.h
timotimo fair enough
the compare_offset minus the offset is the length of the strand's piece, right?
diakopter don't remember exactly 02:01
driving on the highway
(kidding) :) but not in front of my computer 02:02
timotimo whoops. i think i just outputted a 8-bit utf8 encoded string into a bunch of int64 slots m) 02:03
nope, MVMCodepoint32
but still wrong
ah well, let's do it right. after the release. 02:04
i wonder what not_gerd is up to these days 02:05
haven't seen him in a long while
dalek arVM: 87b2029 | jnthn++ | docs/release_guide.md:
First stab at a release guide.

To make sure the bus number can be more than 1 here.
02:06
timotimo jnthn: --prefix=install is apparently the default 02:08
jnthn timotimo: OK. I'll leave it in there in case we change that. 02:11
timotimo is unsure how to debug the failed to load library thing :( 02:14
getting the output of __dlerror after the library comes back NULL from dyncall would be excellent 02:19
$1 = 0x18108a0 "./secmoar_ops.so: undefined symbol: seccomp_load" ← now i know that it didn't find this symbol ... i linked it in with ld, but i probably would have to link it in statically or something
yay, i had to move the -lfoobar from cc to ld 02:20
obviously
huh. 02:21
gist.github.com/timo/e01bdb2252a683fd9e9d
(updated with secmoar_sandbox.nqp and the build script) 02:22
ah! 02:23
--output= instead of -o
interesting.
diakopter timotimo: do you havea way to contact not_gerd? 02:25
timotimo i don't think so 02:27
diakopter he's in your country; just linear search
timotimo good idea
so ... i have an op named nqp::smclientcreate and moar seems to think it wants 4 arguments, but i'm pretty sure i gave it 3 everywhere
MVM_ext_register_extop(tc, "smclientcreate", secmoarclientcreate, 3, s_secmoarclientcreate);
this is in C
static MVMuint8 s_secmoarclientcreate[] = { MVM_operand_int64 | MVM_operand_write_reg, MVM_operand_obj | MVM_operand_read_reg, MVM_operand_obj | MVM_operand_read_reg, MVM_operand_obj | MVM_operand_read_reg };
as is this 02:28
MAST::ExtOpRegistry.register_extop('smclientcreate', MVM_operand_int64 +| MVM_operand_write_reg, MVM_operand_obj +| MVM_operand_read_reg, MVM_operand_obj +| MVM_operand_read_reg, MVM_operand_obj +| MVM_operand_read_reg);
and this is in nqp
$ops.add_core_moarop_mapping('smclientcreate', 'smclientcreate');
as is this
so ... huh?
diakopter well there's 4 there in teh first C line
timotimo there is?
diakopter counting the first (output) one
timotimo oh? so i have to supply the variable i want the return value to be put into as the first argument in nqp, too? 02:29
is the 3 there correct in the C code?
diakopter no
timotimo OK 02:30
that has to be 4, yes?
so, how do i make it work? :\ 02:31
i can't supply my variable there, because it'll say "cannot accept void register"
huh, half past 3 already?!
i better get some sleep.
diakopter :) 02:34
timotimo don't think you're off the hook just yet! 02:37
jnthn Tiem for some sleep & 02:41
diakopter 'n
02:44 benabik joined
benabik Hm. 19-file-ops.t failures 36-40: reading a{ line till {CR,CRLF,LF,EOF},n empty line} 04:24
05:50 jnap joined
FROGGS benabik: that is kinda expected, jnthn had to change the way we detect newlines 07:33
but I dunno if this will affect rakudo, I guess not 07:34
07:59 jnap joined 08:09 Mouq joined 08:22 FROGGS joined 08:32 odc joined 09:00 jnap joined 10:01 jnap joined 10:02 Mouq joined
jnthn MoarVM 2014.01 is tagged, and release is here: jnthn.net/MoarVM/MoarVM-2014.01.tar.gz 10:15
hoelzro \o/ 10:16
FROGGS I am testing it (again) after current p-spectest
nwc10 good UGT jnthn 10:17
FROGGS jnthn: what do we do about this? t/spec/S06-advanced/callframe.rakudo.parrot ..................... Failed 1/9 subtests 10:20
jnthn FROGGS: I dunno, why's it fail?
FROGGS not ok 2 - callframe().line 10:21
# got: '14'
# expected: '15'
almost looks like the test is off
jnthn What do other backends think?
FROGGS jnthn: all think the same 10:22
FROGGS is looking at the test file now
jnthn What does a human thing? :)
*think
FROGGS 14 sub f() { 10:23
15 is callframe().line, $baseline + 5, 'callframe().line';
what do you think?
14, right?
jnthn Hmm 10:24
Well, but I think it's meant to be the line where callframe is?
FROGGS yeah, I see 10:25
I duplicated that test line, and the second invocation succeeds
jnthn Odd...
FROGGS even
jnthn Was one of the commits that fixed line number related things on Moar to blame?
FROGGS I will check 10:26
I think there only are two related commits... trying something with one of them 10:30
nr: say callframe().line 10:32
camelia rakudo-parrot c5ca99, rakudo-jvm c5ca99, rakudo-moar c5ca99, niecza v24-109-g48a8de3: OUTPUT«1␤»
FROGGS nr: ␤␤␤sub foo {␤say callframe().line␤}␤
camelia ( no output )
..niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ &foo is declared but not used at /tmp/tmpfile line 1:␤------> sub foo ⏏{␤␤»
FROGGS nr: ␤␤␤sub foo {␤say callframe().line␤}␤foo
camelia rakudo-parrot c5ca99, rakudo-jvm c5ca99, rakudo-moar c5ca99, niecza v24-109-g48a8de3: OUTPUT«2␤»
FROGGS nr: ␤␤␤sub foo {␤␤␤␤say callframe().line␤}␤foo 10:33
camelia rakudo-parrot c5ca99, rakudo-jvm c5ca99, rakudo-moar c5ca99, niecza v24-109-g48a8de3: OUTPUT«5␤»
FROGGS umm, wait 10:53
the fudged script gets a line stripped
jnthn: it is just this commit: github.com/perl6/roast/commit/de89...33dbaea330 10:54
we need to adjust our expectations :o)
yeah, niecza gets it wrong too of course... fixing it 10:57
11:01 jnap joined
timotimo i still don't understand what i'm doing wrong when trying to register my extops with mast 11:31
smclientcreate is set to have 4 arguments, one of which is a write register, so i *should* be fine passing 3 arguments and using the return value, no?
jnthn timotimo: Yes, the nqp:: op mapping should do the "write register is result" thing for you 11:32
timotimo: Presumably you made the write register the first operand?
timotimo where should i look if it fails?
yes, i did
OH DUH 11:33
jnthn Well, how does it fail?
You can always do --target=mast
Or failing that,--target=mbc --output=x.moarvm and then moar --dump x.moarvm
timotimo forgot to put $ before the MVM_operand_foo numbers
jnthn oops
FROGGS yeah, $$ is what you need 11:34
babe
timotimo :) 11:35
#2 MVM_string_utf8_encode_substr (tc=0x603430, str=0x7ffff65e2cf8, output_size=0x0, start=start@entry=0, length=11258999068426240) at src/strings/utf8.c:291 11:48
291 memset(result, 0, sizeof(MVMint32) * length + 2);
(gdb) print length
$18 = 11258999068426240
seems legit.
jnthn long string is long 11:50
11:50 Mouq joined
timotimo it's supposedly "-e" 11:51
its flags is 0, meaning STR_TYPE_UINT32 11:52
its codes = 0, doesn't that mean its length is 0?
ah, whoa
graphs = 18014398509481984,
how did that happen?
nwc10 r: printf "%016X", 18014398509481984 11:53
camelia rakudo-parrot c5ca99, rakudo-jvm c5ca99, rakudo-moar c5ca99: OUTPUT«0040000000000000»
moritz a single bit set 11:54
timotimo huh.
it may not be a MVMString 11:55
what do i have to cast the .st.WHAT to to get the right structure?
i have to .get_str on it %) 11:58
SecMoar: couldn't create a socket pair: Success ← oh how i love errno :) 11:59
ah! "On success, zero is returned." 12:00
jnthn hehe
timotimo hm. i have a BOOTIO, but it seems like i'm supposed to have an MVMOSHandle 12:01
in general, how do i find my way to these? i should probably pass the class with the nqp op, right? 12:02
12:02 jnap joined
jnthn timotimo: You're confusing type and REPR 12:03
BOOTIO is a type based on the MVMOSHandle REPR.
timotimo ah, huh. 12:04
jnthn What're you trying to do?
timotimo i have a file descriptor in a C struct and i'd like to expose that as a handle to nqp/perl6 land via an op
oh, huh
i apparently forgot to even set the fd itself
jnthn Not sure how to get from fd to a thingy that'll work out with the various IO ops; I guess see libuv docs to see if they have a way...or see how getstdin and the like do it 12:08
timotimo sure 12:12
it would appear that i'll have to use libuv's pipe mechanism instead of the one unix gives me 12:17
which is a tad annoying, as i'm bound to linux anyway
oh well. on unix, it's a unix domain socket rather than a normal pipe 12:18
that's kind of annoying
but at least the uv_pipe has a built-in notion of passing file descriptors, so that's already nicer than a regular socketpair
but apparently uv_pipe_open is what i need 12:21
jnthn: so i'm creating my handle with MVMOSHandle * const result = (MVMOSHandle *)MVM_repr_alloc_init(tc, tc->instance->boot_types.BOOTIO); and returning that as the object register like this: GET_REG(tc, 0).o = (MVMObject *)result; 12:31
shouldn't that give me an object with the MVMOSHandle REPR?
jnthn timotimo: Yes, it should 12:45
timotimo time to debug i guess
jnthn Those two lines look correct, so maybe the issue is elsewhere 12:46
I mean, I guess you are populating the object in some way before returning it?
timotimo yes 12:48
yeah, the repr is apparently type 7 rather than 8 12:54
the other way around.
apparently that's a P6int
d'oh
i'm an idiot
13:03 jnap joined 13:38 Mouq joined
timotimo strings confuse me. 13:45
the string's content seems to be correct, but the graphs number is totally off 13:46
FROGGS my cats enjoy 'em
timotimo: so what level is it correct? at byte level?
timotimo yes, i'm casting the individual int32s to char and letting them be printed out 13:47
in gdb
and the string is what i expect it to be and it's even null terminated
jnthn The NUM_GRAPHS(...) should be the number of 32 bit things 13:50
14:04 jnap joined 15:04 jnap joined 15:27 Mouq joined 16:00 FROGGS joined 17:15 Mouq joined 17:24 guest1338 joined 17:56 FROGGS[mobile] joined 19:02 woolfy joined 19:03 Mouq joined 19:27 tgt joined 19:57 tgt joined
FROGGS r: say "\c[ARMENIAN DRAM SIGN]".ord 20:01
camelia rakudo-moar bbbebb: OUTPUT«1423␤»
..rakudo-parrot bbbebb, rakudo-jvm bbbebb: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unrecognized character name ARMENIAN DRAM SIGN␤at /tmp/tmpfile:1␤------> say "\c[ARMENIAN DRAM SIGN⏏]".ord␤»
timotimo \o/ 20:02
FROGGS r: say 0x058F
camelia rakudo-parrot bbbebb, rakudo-jvm bbbebb, rakudo-moar bbbebb: OUTPUT«1423␤» 20:03
FROGGS yay :o)
(our own stuff)++
20:14 Mouq joined 20:36 odc joined 21:26 ggoebel1112 joined 22:13 japhb joined 22:24 woolfy1 joined 23:05 tgt joined 23:14 dalek joined
dalek arVM: 6e85b9c | jnthn++ | src/core/coerce.c:
Increase precision in num => str coercion.
23:48