00:19 lizmat joined 01:38 TimToady1 joined 03:54 TimToady joined 04:23 vendethiel joined
dalek arVM: 1cf923b | TimToady++ | src/strings/ops.c:
ordbaseat should handle synthetics, it would seem
06:00
TimToady diakopter++ too
diakopter timotimo: good morning! 06:34
06:49 domidumont joined 07:14 domidumont joined
nine timotimo: the tests you mention fail regularily here. Your branch is not at fault. 07:40
09:21 zakharyas joined 09:28 leont joined 09:52 donaldh joined 10:01 zakharyas joined 10:02 leont joined 10:15 brrrt joined
brrrt good * #moarvm 10:17
lizmat brrrt o/
nwc10 good *, brrrt 10:24
blog.pyston.org/2015/11/24/pyston-t...recording/ is updated with a link to slides at www.slideshare.net/KevinModzelewski...alk-111015
brrrt hi lizmat, nwc10 10:31
i'm still puzzling over the decision linked list / linear array
linear array, because i might want random access 10:32
linked list, because i might want splicing
i know of a way to work arround splicing, but it isn't exactly elegant
or maybe it is, depending on your point of view
so as you know, for design questions i come to you :-) 10:33
it's funny how pyston started out as a greenfield implementation that gradually merged in stuff from cpython 10:34
its like if we had started with parrot and had copied all the difficult stuff from perl5 10:35
it is of course quite a luxury to even be in such a position 10:37
JimmyZ so do you plan merge even-moar-jit before 6.c, brrrt ? 11:10
brrrt JimmyZ: no 11:12
i may be able to do that after tiler linearisation, inner-basic-blocks, and offline-register-allocation 11:13
the big three for even-moar-jit
maybe I should call them
TL, IBB, ORA 11:14
JimmyZ yeah, all looks like hard
brrrt just so you know what i'm talking about
TL touches again a lot of things, but it is mostly a mechanical transformation
i.e. i already give my tiles a number
so why not put them in a list while you're at it?
the difficulty is then in all the things that happen between emitting bytecode from a tile, those also need to be added to the list, or handled outside of it 11:15
JimmyZ integration is hard :P
brrrt in fact, having these things in a linear-list which can be scanned and of which it is easy to assert certain things, *specificially* 'which basic block is the last user of this value', is the whole point of TL 11:16
lizmat brrrt: wrt to linked list vs linear array: if you *might* want splicing, it feels like making a decision on a feature you may not need
brrrt: and hence a linear array seems like a more logical choice to me 11:17
brrrt well, let's say it this way
lizmat brrrt: otoh, if you are sure you need a *lot* of splicing, then linked list :-)
brrrt i *do* need to be able to conceptually insert loads, stores, etc into the 'linear' array
lizmat between is a grey area :-)
brrrt but, it is not actually required that i splice them directly in there
lizmat are you suggesting a mix of array and linked list ? 11:18
brrrt i.e. i can maintain a second array that holds all the spliced-in-things, along with the indexes where they should be spliced, and iterate them together
lizmat aka a linked list of arrays ?
brrrt also a possibility, yes
but i kind of like to reduce my data structure complexity as much as possible
lizmat well, a lot of re-allocs are not something you would want from an execution point of view 11:20
brrrt true
in case you want to reduce reallocs, linked lists are of course ideal
you know what 11:21
i just try the linear array first; and if that doesn't work like it should, it'll be easy enough to change to linked lists
lizmat MIW before MIF :-) 11:22
brrrt right :-) 11:24
11:50 pyrimidi_ joined 13:36 zakharyas joined 15:42 zakharyas joined
TimToady so RT #126771 is basically about running off the end of a string with nqp::ordbaseat and getting an exception 15:56
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=126771
TimToady I have a patch that makes it return -1 instead, but should we instead be forcing all usage of the instruction to check bounds more tightly? 15:57
jnthn: ^^^ Q for you, mostly
(the dicey calling code is the $im case of INTERPOLATE) 15:59
about the only downside to the -1 approach is that you might compare two -1 results and think you have a match 16:01
nwc10 there's need for a -1 but NaN ? 16:02
TimToady so I guess the question is one of philosophy and maybe consistency: how much failsoft do we allow ourselves in the instruction set where? 16:03
nwc10 I'm really not competant to answer this
TimToady nwc10: it's expecting to return an integer codepoint (non-synthetic), so -1 is not a valid return already, so we wouldn't need NaN to fight semipredicateness 16:14
nwc10 it was more the NaN != NaN thing 16:15
TimToady plus you'd have to change the return type to a floater, which is ugh
nwc10 a -1 that behaved like that
yes, that's ugh
TimToady ah
hoelzro o/ #moarvm 16:24
TimToady well, I'll probably just check in this patch, and get on with it, since it'd be a no-brainer to back it out if we decide to do it the other way
well, maybe I'd better test first :) 16:25
dalek arVM: 6da907f | TimToady++ | src/strings/ops.c:
less cowbell with ordbaseat off end of string

We now return a failsofter -1 instead of throwing.
17:11
diakopter m: nqp::ordbaseat("",0)
camelia rakudo-moar 09a3e3: OUTPUTĀ«Invalid string index: max -1, got 0ā¤ in block <unit> at /tmp/BroV_mmcNe:1ā¤ā¤Ā»
diakopter m: nqp::ordbaseat("",-1) 17:12
camelia rakudo-moar 09a3e3: OUTPUTĀ«Invalid string index: max -1, got -1ā¤ in block <unit> at /tmp/vWHQUKUctO:1ā¤ā¤Ā»
diakopter heh
dalek arVM: 0ada249 | TimToady++ | src/strings/ops.c:
fix off-by-one noticed by diakopter++

also check for negative offset
17:35
jnthn m: nqp::substr('x', 1, 1) 17:36
camelia ( no output )
jnthn m: nqp::ordat('x', 1)
camelia rakudo-moar 34b87d: OUTPUTĀ«Invalid string index: max 0, got 1ā¤ in block <unit> at /tmp/eW9Rrf1x0h:1ā¤ā¤Ā»
jnthn Perhaps that one wants consistentizing too
TimToady nod 17:39
jnthn ponders dinner 17:40
nwc10 it's usually better to eat dinner than merely to ponder it 17:52
jnthn well, more "what to do" 17:53
But think I've decided
bbl :)
diakopter mmm dinner 18:01
dalek arVM: 0670e3d | TimToady++ | src/ (3 files):
make ordfirst and ordat consistent with ordbaseat
18:06
18:06 JimmyZ_ joined
JimmyZ_ jnthn: what's your plan about sync io branch? 18:07
jnthn: I want to merge my backlog branch before 6.c, because it changes the op api 18:09
TimToady m: say(nqp::ordat('x', 1)) 18:11
camelia rakudo-moar 3f8566: OUTPUTĀ«-1ā¤Ā»
TimToady m: say(nqp::ordfirst('x')) 18:12
camelia rakudo-moar 3f8566: OUTPUTĀ«120ā¤Ā»
TimToady m: say(nqp::ordfirst(''))
camelia rakudo-moar 3f8566: OUTPUTĀ«-1ā¤Ā»
TimToady m: say ord ""
camelia rakudo-moar 3f8566: OUTPUTĀ«(Int)ā¤Ā»
TimToady hmm, should probably be Nil
in fact, I need to take an audit pass on all the places that return type objects to mean Nil 18:29
jnthn JimmyZ: What op API does it change? 18:45
Ah, foudn it 18:46
I don't think it should be on sync sockets. 18:47
18:48 vendethiel joined
jnthn ah, maybe it can be 18:48
Yeah, it's more portable than I realized. :)
JimmyZ: Are there NQP and Rakudo patches too? 18:49
jnthn doesn't see an NQP one 18:50
And I fear we break async sockets on JVM without that
Could you submit a PR for that, and then an updated Rakudo one? And I'll be fine to merge the three. 18:51
18:57 JimmyZ__ joined
JimmyZ__ jnthn: there is a backlog nqp branch 18:58
you can merge it directly ;) 18:59
jnthn Oh, it's a branch
JimmyZ__ and a rakudo pr there too.
so only need to bump version 19:03
19:03 zakharyas joined
JimmyZ__ the nqp backlog branch cantains the jvm patch 19:04
03:05 am here, good night
19:10 leont joined 19:20 Peter_R joined 19:29 vendethiel joined
leont I've got rakudo-moar hanging in epoll while trying to load a module, any idea what could be going on? 20:49
This isn't making sense to me :-s 20:50
jnthn Me either :S
Any threads involved at all?
leont Yes
Erm, no?! 20:51
jnthn
.oO( Schrodingers thread )
Got a backtrace?
leont (was confusing my bugs, dealing with a two regressions at the same time)
paste.scsys.co.uk/502339 20:52
One thread
jnthn o.O
Can you MVM_dump_backtrace(tc);
timotimo perhaps it's waiting for data to be available on a file descriptor? 20:53
leont In what frame?
jnthn Maybe not 'cus you don't seem to have debugging symbols
Any MVM_ one
timotimo this is for th synchronous file read case, so that could be
jnthn MVM_io_syncstream_read_line will do
leont Nope, lack of debugging probably
jnthn aye
timotimo in that case --debug=3 in your moar's configure.pl would do it 20:54
leont I guess --moar-option in rakudo is my friend for that one 20:55
timotimo yeah 20:57
leont It wants to reuse the existing moarā€¦
timotimo hasn't used rakudos configure.pl for building nqp and moar in a long time
oh, that makes sense i suppose
nothing keeps you from just cd-ing into the oar directory, though
just make sure you give it the right --prefix
leont Which one? 20:58
leont goes nuke his install dir, seems easier 20:59
timotimo um ... just the install dir 21:02
21:17 vendethiel- joined
leont Now running with a debugging moar, getting a SIGTTOU, not sure what to make of thatā€¦ 21:44
(wait, I'm not doing exactly the same anyway, retrying) 21:45
Forget what I said about SIGTTOU, I'm now getting a SIGTTIN when calling MVM_dump_backtrace 21:48
jnthn o.O 21:49
leont Yeahā€¦ 21:50
jnthn And I'm guessing it refuses to actually dump the backtrace?
leont Yes 21:51
jnthn Joy. That was the easiest hope of figuring out exactly what readline it's trying to do.
And on what handle
leont I've just pushed to my harness branch 21:52
It should be reproducable by adding a Foo.pm that contains Ā«use TAP;Ā», and then doing ./perl6 -I. -Ilib -MFoo -e0 21:53
(haven't tried minimizing TAP.pm to the point where it no longer does this yet, may be possible)
jnthn Hmm. On Windows that explodes like this: 21:58
===SORRY!===
Missing or wrong version of dependency 'C:\consulting\rakudo\Foo.pm6' (from 'C:\consulting\rakudo\Foo.pm6')
oh, that may be leftover stuffs 21:59
hm, no
Yeah, something's wrong 22:00
And certainly depends on the content of TAP.pm 22:07
But it reports that it's Foo that is to blame
my &colored = try { EVAL q{ use Terminal::ANSIColor; &colored } } // sub ($text, $) { $text } 22:10
That line seems to be to blame
leont Interesting 22:11
Specially because loading TAP directly works fine, but indirectly apparently not 22:12
jnthn Yes
if you golf TAP.pm to the line
my &colored = try { EVAL q{ use Terminal::ANSIColor; &colored } } // sub ($text, $) { $text }
Then it still produces an identical bug here 22:13
Don't know if it gives you the same hang.
I need to go sleep now...teaching tomorrow then flight after it... :S
(Teachig is fine, but grmbl airport...plane...Friday...) 22:14
*Teaching
leont jnthn++ # doing magic
jnthn nine++, if awake, may have further ideas what's going on
But at least this reduces the surface area a good bit :) 22:15
leont Yes, quite
jnthn :)
'night
nine what's up? 22:16
leont Two one lines .pm files can make moar hang, and it really shouldn't
nine hang as in 100 % CPU or as in sleeping? 22:17
jnthn nine: A module TAP.pm with the line I posted above placed in lib, a module Foo that uses that placed in ., perl6 -Ilib -I. -e "use Foo" = hang on...Linux?...and on Windows you get "Missing or wrong version of dependency 'C:\consulting\rakudo\CertainlyNot.pm6' (from 'C:\consulting\rakudo\CertainlyNot.pm6')"
leont With your one line version in its own module, I also get "Missing or wrong version of dependency" on Linux now 22:18
jnthn Curious 22:19
nine Would use Terminal::ANSIColor be successful?
jnthn Certainly not for me
Don't have it in lib or . or anything installed
Really should sleep... o/
nine jnthn: then good night :0
:)
leont: do you have Terminal::ANSIColor? 22:20
leont No, working from rakudo checkout, though I think I saw the same problem on a rakudo that did have it installed
nine I could very well imagine that we don't unlock the .precomp/lock if module loading fails. It's a not very well tested code path. 22:21
Oh yes, I see the bug in the code 22:22
leont That may explain what I'm observing
nine What's your "finally" equivalent?
s/your/our/
leont LEAVE? 22:23
nine Trying 22:24
Now I'm getting a "Missing or wrong version of dependency"... 22:29
Pushed a fix 22:34
leont nine++ \o/
nine At least a fix for the obvious mistake. There may be more... 22:35
22:47 Peter_R joined
diakopter nine: into which repo did you push a fix 23:05
leont rakudo, github.com/rakudo/rakudo/commit/446ea7b8d8 23:07
diakopter ah, dalek must've died 23:09
leont exterminated, obviously
diakopter oh there it is 23:10
duhh
didn't look high enough