timotimo it seems like IO::Socket::Async explodes violently when you try to send data on an unopened socket 00:05
i'm trying to put in a check at the C level rather than introduce a $!closed or something 00:06
and i'm not quite getting it ...
hum ... 00:08
it's crashing, but it doesn't seem to happen the same way
and i can't find anything that'd be obvious to look at 00:09
my debuginfo packages all seem to be broken :\ 00:12
not matching what i have installed any more
04:03 FROGGS_ joined 04:32 vendethiel joined 04:58 ShimmerFairy joined 05:52 vendethiel joined 06:44 vendethiel joined 07:18 vendethiel joined 08:16 vendethiel joined 09:15 vendethiel joined
jnthn hah, DST...that's why I thought I slept unusually long :) 10:25
timotimo: The idle handler is looking for new work. There should be a better way to handle this.
10:28 JimmyZ joined 10:30 JimmyZ joined
dalek arVM: 788d64f | jnthn++ | src/6model/sc.c:
Improve "No foo at index 123" errors.

Indicate the compilation unit that was involved in the version skew.
10:49
11:50 vendethiel joined 12:47 vendethiel joined 13:00 colomon joined 13:53 zakharyas joined 14:09 colomon joined, rurban_ joined
FROGGS Probable version skew in pre-compiled '/home/froggs/dev/panda/ext/File__Find/lib/File/Find.pm' (cause: no object at index 296) 14:09
gist.github.com/FROGGS/60d3852e84a16f496955 14:10
14:11 brrt joined 14:17 kjs_ joined
jnthn FROGGS: Yes, that's the improved reporting :) 14:26
FROGGS yeah, though I don't have a clue what goes wrong offhand :o) 14:27
the only thing that looks weird is that it talks about a precomp thing and reports Find.pm
and not Find.pm.moarvm 14:28
jnthn It pulls the description out of the SC 14:29
Which is the source file name
This could maybe happen if you pre-compile the Shell::Command module against a pre-comp'd File::Find
But then come load time it fails to find the pre-comp'd File::Find and goes for the source one instead and thus re-compiles it 14:30
FROGGS hmmm 14:31
jnthn Dunno if the env var you can set to debug module loads helps here.
FROGGS RAKUDO_MODULE_DEBUG 14:34
jnthn: btw, I cannot reproduce your panda/panda-m issue on windows... 14:35
jnthn Aww
OK, I'll toss my install dir again on latest, later on
FROGGS or was that just about passing --ver before gen-meta? 14:36
jnthn No, panda vs panda-m was the issue
FROGGS hmmm
weee-uhd
jnthn Were any of the PRs you sent for provides sections on my modules? :)
jnthn sees no emails and guesses not
FROGGS github.com/jnthn/grammar-debugger
jnthn hmm
github, y u no email me 14:37
Merged that one, anyways.. 14:38
FROGGS k
:o)
jnthn I'm going to go through mine for what needs "use nqp" also :)
but, later :) & 14:40
FROGGS ahh grrr, I know why 14:41
the File/Find.moarvm is installed as the first file, so it is just called '0'... which is falseish -.- 14:42
FROGGS facepalms
14:50 dalek joined
FROGGS no, it might not be that simple :/ 14:55
15:04 colomon joined 15:07 colomon joined 15:15 vendethiel joined 15:18 colomon joined 15:24 brrt joined
FROGGS okay, I know what heppens 15:24
happens, even
15:46 colomon joined 16:07 brrt joined 16:56 mj41 joined 17:20 colomon joined 17:33 vendethiel joined 17:36 colomon joined 17:50 colomon joined 18:06 colomon joined 18:20 colomon joined 18:23 colomon joined 18:39 colomon joined 18:59 colomon joined 19:06 kjs_ joined 19:18 kjs_ joined 19:39 zakharyas joined 20:01 psch joined
psch \o 20:01
jnthn o/ 20:02
psch jnthn: both calls to MVM_string_decode have MVM_encoding_type_utf8
i think default Configure.pl builds with linenoise and not readline?
jnthn Yes, default is linenoise 20:03
I was more curious about the other argument, as in what does linenoise give back in the ^D case?
psch hm, setting a bp in fileops.c:352 still straight SEGVs 20:07
i might be doing it wrong :)
well, neither MVM_file_readline_interactive_fh nor fileops.c:352 as breakpoint let me look at the return value of linenoise - both rather just SEGV 20:12
i don't think i can easily put my usual debug-prints there...
not to mention those usually are a bit less meaningful in C code
FROGGS jnthn: I try to make `num32 is rw` in signatures work... but the variable in P6 does not get updated... 20:13
gist.github.com/FROGGS/7a95f8fd17b...-diff-L108
jnthn MVM_repr_set_num is surely wrong
FROGGS I correctly get the value back after the all, but set_num does ...
ohh
jnthn In fact, you should probably never call that ever :)
It's changing the boxed value in a presumably immutable Int
FROGGS hmm, it felt sane :o)
ups
jnthn For "is rw" we need to deal with the native ref stuff 20:14
psch: I wonder a bit if linenoise gives us back a NULL in the ^D case, and then we mis-handle that...
FROGGS hmm, I have no idea (yet) what exactly that means
jnthn FROGGS: Unfortunately, there's another problem... :(
FROGGS: When we code-gen native calls, we go and de-containerize all the arguments at the moment 20:15
FROGGS: Meaning the native ref never makes it to us
FROGGS hmmm
jnthn FROGGS: Well, it means you're wanting to do something like the assign_n op does.
But unfortunately, the other problem is going to block this bit. 20:16
+ void **free_rws = NULL; 20:17
That part of your approach is exactly what I'd have done, fwiw :)
FROGGS \o/
jnthn MVM_6model_container_assign_n is more like what you're looking for, anyways.
FROGGS yeah, as you said the assign_n results in 'Cannot assign to an immutable value' 20:18
jnthn Yeah, 'cus we strip :(
FROGGS but... just getting rid of the decontainerizing in nqp is also not enough, right?
jnthn Well, then we'd get a different problem 20:19
FROGGS do we have to conditionally decontainerize?
jnthn (Scalar containers around stuff)
psch "if (count == -1) return NULL;" says linenoise.c:405
and we init return_str = NULL
FROGGS (if that would be easily possible, which I think is not true)
psch and if(line) { ... } else { data->eof } ... return return_str; 20:20
jnthn: i think those might should mean you're right. we're getting NULL from linenoise and return our initialization NULL
jnthn Yeah...that bit should be OKish
psch s/those/those bits/
(and minus one of should | might) 20:21
jnthn psch: Anyway, it seems like concatenate isn't being sufficiently careful about NULL inputs 20:24
psch jnthn: neither is say. concatenate is where i found it because i concat for moreinput, but my golf SEGVs in say 20:25
jnthn *nod* 20:26
Yeah, looks like not much is.
Question is why we got away with this before now...
FROGGS ohh, we already had NULLs in concat
but we usually solved what put the NULLs in there :o)
psch yeah, that's what i'm wondering 20:27
FROGGS making it more robust would "solve" a spesh bug Tux was hitting in Text::CSV
psch i mean, whether it's more sensible to not let any NULLs in or take care everything can deal if they come from somewhere even though they probably shouldn't anyway
jnthn my $newcode := nqp::readlineintfh($stdin, ~$prompt); 20:28
if nqp::isnull($newcode) || !nqp::defined($newcode) {
That's the code from HLL::Compiler
psch mostly from an tuit-efficiency perspective
jnthn psch: Well, I'd rather put guards for them into string ops.c tbh
nqp-m: my $x := nqp::null_s(); say(nqp::isnull($x)) 20:29
camelia nqp-moarvm: OUTPUTĀ«0ā¤Ā»
jnthn nqp-m: my $x := nqp::null_s(); say(nqp::defined($x))
camelia nqp-moarvm: OUTPUTĀ«1ā¤Ā»
jnthn There the null string is boxed
And we test the box, which will never be null and always be defined 20:30
psch so readlineintfh should return a boxed NULL on EOF? 20:31
jnthn No 20:32
Ops that have native things to hand back never box stuff, by design
It's for the compiler to emit a "box this" op
The question is what we should do if asked to box a NULL string 20:33
We could return a null object (tc->instance->VMNull) 20:35
Which would make the code in HLL::Compiler actually work
20:45 brrt joined
psch jnthn: i don't get it. my golf dies in MVM_string_say in < if (!IS_CONCRETE((MVMObject *)a)) >, with a = 0x0 20:59
jnthn: i assume that means that whatever came from readlineintfh is NULL
jnthn: the golf itself doesn't box
jnthn psch: Yes, the problem is there's no !a || at the start of that if 21:05
IS_CONCRETE isn't a NULL check, it's a concreteness check assuming we have an object 21:06
psch ah, okay. that's one of the spots that should be guarded then
similarly for concatenate i guess
jnthn yeah
I'm still pondering on the box null string question, though
We could just throw
21:10 kjs_ joined
psch i think readlineintfh shouldn't return NULL, actually. guarding in the say if throws on ^D, which isn't really useful behavior 21:11
jnthn Well, what should it return? 21:13
psch ...right. a str is what's in memory, isn't it 21:14
jnthn ?
An MVMString * goes in an s register
That's the "str" type in Perl 6. 21:15
(And NQP)
I think the NULL is reasonable enough, it's just that boxing it into an object giving an object containing a NULL MVMString on it kicks the problem a long way too far down the road. 21:16
For now, I'd my str $newcode := ... in HLL::Compiler, and nqp::isnull_s 21:17
(and toss the !nqp::defined bit)
That'll work whichever option we pick for sanifying the "box a NULL"
And is probably what was intended anyway
psch i'm not seeing any trouble in HLL::Compiler, i found the SEGV in the moreinput branch with: 21:18
$more := nqp::readlineintfh(nqp::getstdin, '* ');
$cursor."!APPEND_TO_ORIG"($more);
but the same advice probably fits there as well
jnthn Yes, make $more a str 21:19
And do the check
Think I'll sleep on whether to throw or magically produce a null object
The fact I used "magically" to describe it probably means it's a bad idea :)
psch i'll sleep too, i think 21:20
understanding seems a bit hard right now
g'night \o 21:21
jnthn 'night o/ 21:22
21:33 rudi_s joined 21:34 kjs_ joined 22:26 colomon joined 22:36 colomon joined 23:01 colomon joined