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/tmpfileUnrecognized character name ARMENIAN DRAM SIGNat /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 |