Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-12-03

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:19 lizmat joined #moarvm
01:38 TimToady1 joined #moarvm
03:54 TimToady joined #moarvm
04:23 vendethiel joined #moarvm
06:00 dalek MoarVM: 1cf923b | TimToady++ | src/strings/ops.c:
06:00 dalek MoarVM: ordbaseat should handle synthetics, it would seem
06:00 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1cf923b3ca
06:00 TimToady diakopter++ too
06:34 diakopter timotimo: good morning!
06:49 domidumont joined #moarvm
07:14 domidumont joined #moarvm
07:40 nine timotimo: the tests you mention fail regularily here. Your branch is not at fault.
09:21 zakharyas joined #moarvm
09:28 leont joined #moarvm
09:52 donaldh joined #moarvm
10:01 zakharyas joined #moarvm
10:02 leont joined #moarvm
10:15 brrrt joined #moarvm
10:17 brrrt good * #moarvm
10:17 lizmat brrrt o/
10:24 nwc10 good *, brrrt
10:24 nwc10 http://blog.pyston.org/2015/11/24/pyston-talk-recording/ is updated with a link to slides at http://www.slideshare.net/KevinModzelewski/pyston-talk-111015
10:31 brrrt hi lizmat, nwc10
10:31 brrrt i'm still puzzling over the decision linked list / linear array
10:32 brrrt linear array, because i might want random access
10:32 brrrt linked list, because i might want splicing
10:32 brrrt i know of a way to work arround splicing, but it isn't exactly elegant
10:32 brrrt or maybe it is, depending on your point of view
10:33 brrrt so as you know, for design questions i come to you :-)
10:34 brrrt it's funny how pyston started out as a greenfield implementation that gradually merged in stuff from cpython
10:35 brrrt its like if we had started with parrot and had copied all the difficult stuff from perl5
10:37 brrrt it is of course quite a luxury to even be in such a position
11:10 JimmyZ so do you plan merge even-moar-jit before 6.c, brrrt ?
11:12 brrrt JimmyZ: no
11:13 brrrt i may be able to do that after tiler linearisation, inner-basic-blocks, and offline-register-allocation
11:13 brrrt the big three for even-moar-jit
11:13 brrrt maybe I should call them
11:14 brrrt TL, IBB, ORA
11:14 JimmyZ yeah, all looks like hard
11:14 brrrt just so you know what i'm talking about
11:14 brrrt TL touches again a lot of things, but it is mostly a mechanical transformation
11:14 brrrt i.e. i already give my tiles a number
11:14 brrrt so why not put them in a list while you're at it?
11:15 brrrt 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
11:16 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
11:17 lizmat brrrt: and hence a linear array seems like a more logical choice to me
11:17 brrrt well, let's say it this way
11:17 lizmat brrrt: otoh, if you are sure you need a *lot* of splicing, then linked list  :-)
11:17 brrrt i *do* need to be able to conceptually insert loads, stores, etc into the 'linear' array
11:17 lizmat between is a grey area  :-)
11:17 brrrt but, it is not actually required that i splice them directly in there
11:18 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
11:18 lizmat aka a linked list of arrays ?
11:18 brrrt also a possibility, yes
11:18 brrrt but i kind of like to reduce my data structure complexity as much as possible
11:20 lizmat well, a lot of re-allocs are not something you would want from an execution point of view
11:20 brrrt true
11:20 brrrt in case you want to reduce reallocs, linked lists are of course ideal
11:21 brrrt you know what
11:21 brrrt 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
11:22 lizmat MIW before MIF  :-)
11:24 brrrt right :-)
11:50 pyrimidi_ joined #moarvm
13:36 zakharyas joined #moarvm
15:42 zakharyas joined #moarvm
15:56 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:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=126771
15:57 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 TimToady jnthn: ^^^ Q for you, mostly
15:59 TimToady (the dicey calling code is the $im case of INTERPOLATE)
16:01 TimToady about the only downside to the -1 approach is that you might compare two -1 results and think you have a match
16:02 nwc10 there's need for a -1 but NaN ?
16:03 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
16:14 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:15 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
16:15 nwc10 a -1 that behaved like that
16:15 nwc10 yes, that's ugh
16:15 TimToady ah
16:24 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
16:25 TimToady well, maybe I'd better test first :)
17:11 dalek MoarVM: 6da907f | TimToady++ | src/strings/ops.c:
17:11 dalek MoarVM: less cowbell with ordbaseat off end of string
17:11 dalek MoarVM:
17:11 dalek MoarVM: We now return a failsofter -1 instead of throwing.
17:11 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6da907f72a
17:11 diakopter m: nqp::ordbaseat("",0)
17:11 camelia rakudo-moar 09a3e3: OUTPUT«Invalid string index: max -1, got 0␤  in block <unit> at /tmp/BroV_mmcNe:1␤␤»
17:12 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␤␤»
17:12 diakopter heh
17:35 dalek MoarVM: 0ada249 | TimToady++ | src/strings/ops.c:
17:35 dalek MoarVM: fix off-by-one noticed by diakopter++
17:35 dalek MoarVM:
17:35 dalek MoarVM: also check for negative offset
17:35 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/0ada249d0d
17:36 jnthn m: nqp::substr('x', 1, 1)
17:36 camelia rakudo-moar 34b87d: ( no output )
17:36 jnthn m: nqp::ordat('x', 1)
17:36 camelia rakudo-moar 34b87d: OUTPUT«Invalid string index: max 0, got 1␤  in block <unit> at /tmp/eW9Rrf1x0h:1␤␤»
17:36 jnthn Perhaps that one wants consistentizing too
17:39 TimToady nod
17:40 * jnthn ponders dinner
17:52 nwc10 it's usually better to eat dinner than merely to ponder it
17:53 jnthn well, more "what to do"
17:53 jnthn But think I've decided
17:53 jnthn bbl :)
18:01 diakopter mmm dinner
18:06 dalek MoarVM: 0670e3d | TimToady++ | src/ (3 files):
18:06 dalek MoarVM: make ordfirst and ordat consistent with ordbaseat
18:06 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/0670e3df1b
18:06 JimmyZ_ joined #moarvm
18:07 JimmyZ_ jnthn: what's your plan about sync io branch?
18:09 JimmyZ_ jnthn: I want to merge my backlog branch before 6.c, because it changes the op api
18:11 TimToady m: say(nqp::ordat('x', 1))
18:11 camelia rakudo-moar 3f8566: OUTPUT«-1␤»
18:12 TimToady m: say(nqp::ordfirst('x'))
18:12 camelia rakudo-moar 3f8566: OUTPUT«120␤»
18:12 TimToady m: say(nqp::ordfirst(''))
18:12 camelia rakudo-moar 3f8566: OUTPUT«-1␤»
18:12 TimToady m: say ord ""
18:12 camelia rakudo-moar 3f8566: OUTPUT«(Int)␤»
18:12 TimToady hmm, should probably be Nil
18:29 TimToady in fact, I need to take an audit pass on all the places that return type objects to mean Nil
18:45 jnthn JimmyZ: What op API does it change?
18:46 jnthn Ah, foudn it
18:47 jnthn I don't think it should be on sync sockets.
18:48 vendethiel joined #moarvm
18:48 jnthn ah, maybe it can be
18:48 jnthn Yeah, it's more portable than I realized. :)
18:49 jnthn JimmyZ: Are there NQP and Rakudo patches too?
18:50 * jnthn doesn't see an NQP one
18:50 jnthn And I fear we break async sockets on JVM without that
18:51 jnthn Could you submit a PR for that, and then an updated Rakudo one? And I'll be fine to merge the three.
18:57 JimmyZ__ joined #moarvm
18:58 JimmyZ__ jnthn: there is a backlog nqp branch
18:59 JimmyZ__ you can merge it directly ;)
18:59 jnthn Oh, it's a branch
18:59 JimmyZ__ and a rakudo pr there too.
19:03 JimmyZ__ so only need to bump version
19:03 zakharyas joined #moarvm
19:04 JimmyZ__ the nqp backlog branch cantains the jvm patch
19:04 JimmyZ__ 03:05 am here, good night
19:10 leont joined #moarvm
19:20 Peter_R joined #moarvm
19:29 vendethiel joined #moarvm
20:49 leont I've got rakudo-moar hanging in epoll while trying to load a module, any idea what could be going on?
20:50 leont This isn't making sense to me :-s
20:50 jnthn Me either :S
20:50 jnthn Any threads involved at all?
20:50 leont Yes
20:51 leont Erm, no?!
20:51 jnthn .oO( Schrodingers thread )
20:51 jnthn Got a backtrace?
20:51 leont (was confusing my bugs, dealing with a two regressions at the same time)
20:52 leont http://paste.scsys.co.uk/502339
20:52 leont One thread
20:52 jnthn o.O
20:52 jnthn Can you MVM_dump_backtrace(tc);
20:53 timotimo perhaps it's waiting for data to be available on a file descriptor?
20:53 leont In what frame?
20:53 jnthn Maybe not 'cus you don't seem to have debugging symbols
20:53 jnthn Any MVM_ one
20:53 timotimo this is for th synchronous file read case, so that could be
20:53 jnthn MVM_io_syncstream_read_line will do
20:53 leont Nope, lack of debugging probably
20:53 jnthn aye
20:54 timotimo in that case --debug=3 in your moar's configure.pl would do it
20:55 leont I guess --moar-option in rakudo is my friend for that one
20:57 timotimo yeah
20:57 leont It wants to reuse the existing moar…
20:57 * timotimo hasn't used rakudos configure.pl for building nqp and moar in a long time
20:57 timotimo oh, that makes sense i suppose
20:57 timotimo nothing keeps you from just cd-ing into the oar directory, though
20:57 timotimo just make sure you give it the right --prefix
20:58 leont Which one?
20:59 * leont goes nuke his install dir, seems easier
21:02 timotimo um ... just the install dir
21:17 vendethiel- joined #moarvm
21:44 leont Now running with a debugging moar, getting a SIGTTOU, not sure what to make of that…
21:45 leont (wait, I'm not doing exactly the same anyway, retrying)
21:48 leont Forget what I said about SIGTTOU, I'm now getting a SIGTTIN when calling MVM_dump_backtrace
21:49 jnthn o.O
21:50 leont Yeah…
21:50 jnthn And I'm guessing it refuses to actually dump the backtrace?
21:51 leont Yes
21:51 jnthn Joy. That was the easiest hope of figuring out exactly what readline it's trying to do.
21:51 jnthn And on what handle
21:52 leont I've just pushed to my harness branch
21:53 leont It should be reproducable by adding a Foo.pm that contains «use TAP;», and then doing ./perl6 -I. -Ilib -MFoo -e0
21:53 leont (haven't tried minimizing TAP.pm to the point where it no longer does this yet, may be possible)
21:58 jnthn Hmm. On Windows that explodes like this:
21:58 jnthn ===SORRY!===
21:58 jnthn Missing or wrong version of dependency 'C:\consulting\rakudo\Foo.pm6' (from 'C:\consulting\rakudo\Foo.pm6')
21:59 jnthn oh, that may be leftover stuffs
21:59 jnthn hm, no
22:00 jnthn Yeah, something's wrong
22:07 jnthn And certainly depends on the content of TAP.pm
22:07 jnthn But it reports that it's Foo that is to blame
22:10 jnthn my &colored = try { EVAL q{ use Terminal::ANSIColor; &colored } } // sub ($text, $) { $text }
22:10 jnthn That line seems to be to blame
22:11 leont Interesting
22:12 leont Specially because loading TAP directly works fine, but indirectly apparently not
22:12 jnthn Yes
22:12 jnthn if you golf TAP.pm to the line
22:12 jnthn my &colored = try { EVAL q{ use Terminal::ANSIColor; &colored } } // sub ($text, $) { $text }
22:13 jnthn Then it still produces an identical bug here
22:13 jnthn Don't know if it gives you the same hang.
22:13 jnthn I need to go sleep now...teaching tomorrow then flight after it... :S
22:14 jnthn (Teachig is fine, but grmbl airport...plane...Friday...)
22:14 jnthn *Teaching
22:14 leont jnthn++ # doing magic
22:14 jnthn nine++, if awake, may have further ideas what's going on
22:15 jnthn But at least this reduces the surface area a good bit :)
22:15 leont Yes, quite
22:15 jnthn :)
22:15 jnthn 'night
22:16 nine what's up?
22:16 leont Two one lines .pm files can make moar hang, and it really shouldn't
22:17 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')"
22:18 leont With your one line version in its own module, I also get "Missing or wrong version of dependency" on Linux now
22:19 jnthn Curious
22:19 nine Would use Terminal::ANSIColor be successful?
22:19 jnthn Certainly not for me
22:19 jnthn Don't have it in lib or . or anything installed
22:19 jnthn Really should sleep... o/
22:19 nine jnthn: then good night :0
22:19 nine :)
22:20 nine 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
22:21 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:22 nine Oh yes, I see the bug in the code
22:22 leont That may explain what I'm observing
22:22 nine What's your "finally" equivalent?
22:22 nine s/your/our/
22:23 leont LEAVE?
22:24 nine Trying
22:29 nine Now I'm getting a "Missing or wrong version of dependency"...
22:34 nine Pushed a fix
22:34 leont nine++ \o/
22:35 nine At least a fix for the obvious mistake. There may be more...
22:47 Peter_R joined #moarvm
23:05 diakopter nine: into which repo did you push a fix
23:07 leont rakudo, https://github.com/rakudo/rakudo/commit/446ea7b8d8
23:09 diakopter ah, dalek must've died
23:09 leont exterminated, obviously
23:10 diakopter oh there it is
23:10 diakopter duhh
23:10 diakopter didn't look high enough

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary