Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-08-29

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

All times shown according to UTC.

Time Nick Message
00:30 jnap joined #moarvm
01:05 colomon_ joined #moarvm
01:12 FROGGS_ joined #moarvm
06:12 flussence joined #moarvm
06:23 itz joined #moarvm
06:27 mj41 joined #moarvm
06:28 itz_ joined #moarvm
06:45 itz joined #moarvm
06:46 sergot o/
07:23 nwc10 \o
07:29 nwc10 jnthn: ASAN barf :-(
07:29 nwc10 http://paste.scsys.co.uk/420105
07:37 nwc10 jnthn: what valgrind said: http://paste.scsys.co.uk/420110
07:45 donaldh joined #moarvm
07:50 nwc10 and t/spec/S32-list/uniq.rakudo.moar looks to be unreliable. flappy SEGV
07:51 diakopter nwc10: is Sandpit like the Sarlacc Pit?
07:54 nwc10 it isn't meant to be. It gets deleted every so often (eg when I fill the disk)
07:54 nwc10 but that's a reasonable question
07:56 diakopter it's a whimsical, rhetorical, fanciful, farcical question :p
08:08 sergot How does NativeCall work with C++?
08:09 zakharyas joined #moarvm
08:13 Ven joined #moarvm
08:15 donaldh sergot: I imagine it will need some sugar to do name mangling at the very least.
08:15 sergot hmm
08:16 sergot donaldh: is it possible to bind e.g. Qt without this?
08:16 donaldh I don't know. I haven't tried.
08:17 nwc10 jnthn: I have 3 coredumps. I don't seem to have enough info in them to get the command lines, but I think I got three tests exiting with 139 (ie SEGV + coredump)
08:17 nwc10 jnthn: all 3 are in the same place, it's the same as the valgrind output pasted above, and it's the same even if I disable the fixed-size allocator
08:17 nwc10 sergot: I suspect that no-one has tried
08:18 sergot Ok, so I'll try :)
08:19 sergot actually, doing this right now
08:19 sergot we'll see
08:48 donaldh sergot: the dyncall C++ example suggests that it is necessary to calculate vtable offsets when doing method calls
08:48 donaldh sergot: see MoarVM/3rdparty/dyncall/test/plain_c++/test_main.cc
08:51 JimmyZ joined #moarvm
08:56 sergot donaldh++: thanks
09:08 odc joined #moarvm
09:17 Ven joined #moarvm
09:17 donaldh joined #moarvm
09:17 pmichaud joined #moarvm
09:17 tadzik joined #moarvm
09:23 moritz joined #moarvm
09:30 _sri joined #moarvm
09:30 ingy joined #moarvm
09:38 nebuchad` joined #moarvm
09:46 lizmat_ joined #moarvm
09:47 bonsaikitten joined #moarvm
09:47 Juerd_ joined #moarvm
09:48 oetiker_ joined #moarvm
09:51 jnthn joined #moarvm
09:58 cxreg2 joined #moarvm
10:03 tokuhirom_ joined #moarvm
10:07 Ven joined #moarvm
10:10 camelia joined #moarvm
10:11 timotimo joined #moarvm
10:12 harrow joined #moarvm
10:23 colomon_ joined #moarvm
10:25 jnthn_ joined #moarvm
10:26 japhb_ joined #moarvm
10:35 donaldh joined #moarvm
10:38 Ven joined #moarvm
10:51 brother| joined #moarvm
10:51 btyler_ joined #moarvm
10:51 cxreg joined #moarvm
10:51 hoelzro_ joined #moarvm
10:51 sergot_ joined #moarvm
10:51 jnthn joined #moarvm
10:57 betterworld joined #moarvm
11:02 mj41 joined #moarvm
11:03 timotimo joined #moarvm
11:04 lizmat re: t/spec/S32-list/uniq.t   : it reliably segfaults when run with make, but works ok when run with perl6  (and .rakudo.moar)
11:19 cognome_ joined #moarvm
11:21 synopsebot joined #moarvm
11:21 avuserow_ joined #moarvm
11:26 oetiker joined #moarvm
11:28 [Coke]_ joined #moarvm
11:29 carlin joined #moarvm
11:29 diakopte1 joined #moarvm
11:52 gcifuentes joined #moarvm
11:55 timotimo sergot_: if you're interested in Qt, there's things i've been briefly investigating in the past
11:55 timotimo there's the stuff the pyside people came up with, which is Shiboken + GeneratorRunner + ApiExtractor
11:56 timotimo and there's something called "SMOKE", which is kind of like library that gives you access to a "database" with all kinds of info for the API
12:19 sergot_ timotimo: you suggest to implement this in p6?
12:19 sergot_ is it alright?
12:20 timotimo i am a fan of Qt. if we had Qt for perl6, i would be pretty happy. but i'm quite intimidated by the scope of that project
12:21 timotimo also, trying to ask for the pros and cons of shiboken vs SMOKE has lead me nowhere at all
12:21 timotimo the only answer i got to my question is "i prefer SIP, but why would you want to build another binding?", which isn't helpful, because SIP is python only.
12:27 sergot_ timotimo: I'm a fan of Qt too! :)
12:29 sergot_ It would be great to have Qt5 bindings
13:44 flussence Qt5 would be great; I've been thinking about doing EFL bindings (it's C, so it should be straightforward, right?), but I'm not sure how much use it'd be.
13:45 timotimo i have not used EFL yet, but i hear it's pretty rad
14:47 jlaire joined #moarvm
14:59 japhb I'd be really quite happy to have NativeCall able to work with C++ libraries, because Google has OMGALOTOFTHEM.
14:59 japhb And frankly my favorite language for writing C++ would easily by Perl.
14:59 japhb *be
15:00 * japhb has been writing code in a lot of languages that make him go >.< lately
15:05 donaldh joined #moarvm
15:09 [Coke] japhb: I know that feel. I want to be able to write Java in Perl 6 instead of ColdFusion. :)
15:26 japhb my experience in Android training this week has been "If I didn't have a good IDE, I'd go insane."
15:26 japhb But I'd rather just program it in Perl 6 than Java+XML
16:00 jnthn Aside from the concurrency erruptions, are there specific things anybody has that I should be working on? :)
16:06 hoelzro japhb: I'd love to see Perl 6 on Android
16:06 hoelzro I think that it lacks invokedynamic, though, which we need, iirc
16:07 TimToady jnthn: NFG? :P
16:08 jnthn :P
16:08 jnthn Yeah, I should probably dig into that some time soon
16:08 jnthn Native arrays too...
16:08 jnthn I was more meaning "blocking bugs" :)
16:09 TimToady well, native arrays is a blocking bug for NFG, imho
16:09 jnthn If I do it, I'll be putting 'em directly into the VM...
16:10 jnthn Not least 'cus I already shoved a chunk of the abstractions in, in preparation for that.
16:10 TimToady .oO("the VM")
16:10 jnthn Then at some point do a JVM port
16:11 jnthn Of the rope-y thing too
16:11 jnthn Since we suffer a bunch of N**2 issues there also.
16:11 jnthn NFG on Parrot can be Somebody Elses Problem.
16:11 jnthn Much like concurrency.
16:11 TimToady well, if our native arrays are properly implemented and optimized, we oughta be able to write at least a prototype NFG in P6
16:12 jnthn Yes, but really it wants integrating into the decode stream abstraction, which would be a bit tricky
16:12 jnthn (That is the thing that deals with bytes/codepoints hanging over buffer boundaries)
16:13 jnthn (Which is easy enough to get wrong that I really, really don't want to deal with it in more than one place. :))
16:13 TimToady which is why you're dealing with it in two places?
16:13 TimToady (two VMs?)
16:14 jnthn On the JVM I don't have to deal with it.
16:14 jnthn ('cus it's already in their class lib)
16:15 TimToady they do grapheme clusters over boundaries?
16:15 TimToady or just codepoints?
16:15 jnthn No, just the codepoints part at present, but I suspect a little subclassing might get me a neat enough solution.
16:16 TimToady well, native arrays would be really cool anyway, esp if they come in shapes :)
16:16 jnthn Yeah; I really need to read the shapes patches.
16:16 TimToady though of course shapes is just an abstraction over a flat array
16:17 jnthn Also I want to make sure we can avoid the resize checks easily on sized things, and JIT accesses to them well.
16:18 TimToady until we get shapes hooked up, we have no way of declaring something fixed size in P6
16:18 jnthn *nod*
16:18 TimToady (without cheating)
16:18 jnthn I know there's been a bunch of work on lols; how far does that go with shapes so far?
16:18 TimToady does nothing on the repr end of things
16:18 TimToady it's all about subscripting
16:19 TimToady m: my @a := (<a b c>; <d e f>; <g h i>); say @a[*;1]
16:19 camelia rakudo-moar dd580d: OUTPUT«b e h␤»
16:19 jnthn OK, but no decl bits?
16:20 TimToady m: my @a[5;5]
16:20 jnthn As in, no my @a[3;3]; stuff yet?
16:20 camelia rakudo-moar dd580d: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/aZYc0Fcw6Y␤Shaped variable declarations not yet implemented. Sorry. ␤at /tmp/aZYc0Fcw6Y:1␤------> [32mmy @a[5;5][33m⏏[31m<EOL>[0m␤»
16:20 jnthn OK
16:20 jnthn I didn't follow the Mouq++ and your++ patches so well as I probably shoulda...
16:20 jnthn (YAPC prep, YAPC, jetlag, settling into $foreign-assignment)
16:21 TimToady well, Mouq++ did all the subscript stuff; I just did the lollipop literals
16:21 jnthn OK...so shapes are to come...
16:22 TimToady that's the shape of things to come, yeah
16:22 TimToady Mouq++ and I are both scared of reprs :)
16:23 jnthn I suspect this is the point we start to do the array vs Array distinction... :)
16:24 * jnthn wonders if putting a size on means "not lazy"...
16:24 jnthn s/size/shape/
16:24 TimToady well, unlike 'my @a;', I think 'my @a[stuff];' implies allocation
16:24 jnthn *nod*
16:24 TimToady so 'my @[stuff]' is anonymous shaped
16:25 cognome joined #moarvm
16:25 jnthn Can a thing with a shape *ever* be lazy?
16:25 TimToady if a dimension is specified as *
16:26 TimToady then it's supposed to be resizeable at least
16:26 TimToady but I dunno about lazy
16:26 TimToady maybe we restrict it to leaves
16:26 jnthn If we could decide "not lazy", we could just say shape implies array rather than Array
16:26 TimToady well, or Matrix, or matrix, or something
16:26 jnthn Hmm...in that case I guess we'd get array or Array or so :)
16:27 TimToady s/or/of/
16:37 nwc10 jnthn: it would be nice if you coul figure out why that Rakudo commit exposed ASAN barfage
16:37 nwc10 seems to be 1 bug, causing 3 tests to be unhappy/SEGV
16:38 nwc10 and I have no clue
16:38 jnthn nwc10: Do you have it handy? Could you try it with MVM_SPESH_OSR_DISABLE=1?
16:38 nwc10 ASAN barf still with that
16:39 nwc10 no barf with MVM_SPESH_DISABLE=1
16:39 nwc10 (yes, I had it handy)
16:39 jnthn What about INLINE?
16:39 jnthn (MVM_SPESH_INLINE_DISABLE)
16:39 jnthn But darn, from the trace I expected OSR...
16:40 nwc10 MVM_SPESH_INLINE_DISABLE=1 no barf
16:40 jnthn Hmmmm
16:40 jnthn You lceared MVM_SPESH_DISABLE first, I presume?
16:40 jnthn *cleared
16:40 nwc10 I did them on the command line, so "yes", but have checked that my environment is clear (which it is)
16:42 nwc10 right now only t/spec/integration/99problems-51-to-60.t fails with ASAN, but I think at a fractionlly earlier MoarVM revision t/spec/integration/99problems-11-to-20.t and t/spec/S32-list/uniq.rakudo.moar also failed
16:42 nwc10 and all 3 SEGV with a non-ASAN debugging build
17:05 jnthn Yeah, not at all sure what's going on with it...
17:07 jnthn Well, mebbe I can make it panic...
17:08 itz_ joined #moarvm
17:19 donaldh joined #moarvm
17:21 nwc10 gah bollocks. PPC bust
17:21 nwc10 NQP stage 0 fail
17:23 jnthn Balls.
17:23 nwc10 or do I strictly mean Power?
17:23 nwc10 yes, Balls.
17:23 nwc10 lets see if I can figure out how
17:23 TimToady PowerBall?
17:23 nwc10 PowerBallsUp right now
17:24 nwc10 OK, 2014.05 is looking better
17:24 * jnthn wonders if git bollocks is an option
17:24 jnthn uh
17:24 jnthn git bissect
17:24 nwc10 I have 2 repositories to bisect.
17:24 jnthn ugh
17:24 nwc10 yes, been there
17:24 nwc10 at least it's only 2, not 3
17:24 jnthn and one has sub-repos which is, uh...what I said :P
17:24 jnthn s/repos/modules/
17:24 nwc10 I suspect it's a little endian wrongness in a union again
17:24 jnthn ah
17:25 nwc10 this is a guess, of course
17:25 jnthn *sigh* I really dunno what's going on with that inline issue
17:25 itz joined #moarvm
17:25 jnthn I thought I'd got an idea...but no...
17:25 nwc10 jnthn: drink beer, tackle other things, sleep?
17:25 jnthn Also failing to reproduce it on any of those test files here...
17:26 jnthn I am kinda tempted to put in an env var to disable the frame cache...
17:26 jnthn So we can at least eliminate (or blame) that
17:27 jnthn nwc10: If you could try https://gist.github.com/jnthn/a874b51f963049ae794c it'd also let us eliminate a possible issue
17:31 itz_ joined #moarvm
17:31 nwc10 had rebuilt with debugging to use valgrind
17:31 nwc10 with that patch, valgrnd still unhappy
17:31 nwc10 so, no, that's not it
17:34 jnthn Grr
17:34 jnthn Does it panic with https://gist.github.com/jnthn/5d262012b7745ae40fc5 ?
17:35 jnthn 'cus it doesn't here...
17:35 nwc10 applied that on top of previous patch
17:36 nwc10 ok 8 - built a balanced binary tree with 3 items
17:36 nwc10 FAIL
17:36 nwc10 that isn't a panic, but that's different and no valgrind barfage
17:38 jnthn Oh, it *does* panic?
17:38 jnthn The FAIL is the panic message I put
17:38 nwc10 oh, OK, then yes, successful FAIL
17:39 jnthn OK, so why the heck does that not happen locally for me on the same test...
17:40 jnthn Either we should be getting the wrong size in there consistently, or getting it right consistently...
17:40 nwc10 I do not know, but I don't know what OS specific things or environment size thingsmight have changed it
17:40 jnthn I am struggling to imagine any that might... :/
17:41 nwc10 drink beer and sleep on it?
17:41 jnthn Yeah :)
17:48 * jnthn also needs to remember how he tunneled all his traffic via Europe last time he was in China.
17:49 jnthn A few days of the moronic great firewall is quite enough.
17:59 carlin you can use putty to make a SOCKS proxy to an ssh server
18:00 nwc10 if you can get to the ssh server
18:01 carlin true
18:01 lizmat_ joined #moarvm
18:01 TimToady jnthn: I believe you still have a login on wall.org, if you want to set up something there
18:03 jnthn TimToady: I've one in europe I used last time :)
18:04 nwc10 bother
18:04 nwc10 c92d1a4cd5340d787ab5f8f42348573f99738c37 breaks Big Endian
18:04 nwc10 may save a tiny bit of ram on bytecodes by using const_i64_16
18:04 nwc10 reasonable change I think, but must have missed something
18:04 jnthn nwc10: Not only RAM, but unaligned reads.
18:05 nwc10 good point
18:05 nwc10 those things. I forgot those things
18:31 brrt joined #moarvm
18:31 brrt \o
18:32 brrt jnthn: i don't know if you've found the reason for the gc asan angriness yet, however i do have some reason to believe the JIT may be involved
18:32 brrt as in, i still haven't explained why getcodeobj is broken
18:32 jnthn brrt: Ah...
18:32 jnthn nwc10: ^^ try with MVM_JIT_DISABLE ;)
18:33 brrt yeah, and mea culpa obviously :-) i'll try to figure out what's wrong
18:35 brrt how's china, btw?
18:35 nwc10 jnthn: try what? PPC on Moar master from 2 months ago?
18:35 nine I get a "Internal error: Unwound entire stack and missed handler" when running a callback from Perl 5 and this callback tries to execute a method call on a Perl 6 object. Any ideas what might go wrong there?
18:35 brrt ppc has no JIT
18:35 jnthn nwc10: No, sorry, the other bug
18:36 jnthn nwc10: (The ASAN-detected one)
18:36 jnthn My gut feeling says "it's not the JIT", but could to check...
18:37 brrt hmm
18:37 jnthn brrt: China is going well, overall. All is well with work, found some great food... Having my internets harmonized is a little annoying, though... :)
18:37 brrt my gut feeling doesn't trust the JIT one bit
18:37 brrt as in, firewall issues, or just connectivity
18:37 jnthn Great Firewall
18:38 nine Error occurs in: https://github.com/niner/Inline-Perl5/commit/a563d9413baf5204d4a092e84f689d710283fdb3#diff-8818333ab5e0cdc4efad1fae68406474R132
18:38 brrt that's annoying
18:38 brrt can you still use ssh and stuff like that?
18:39 nwc10 jnthn: MVM_JIT_DISABLE=1 makes no difference. Not the JIT
18:39 jnthn OK, "good". That woulda been weird
18:40 brrt hmm
18:40 brrt i suppose so
18:45 brrt then getcodeobj is probably something else
18:46 jnthn brrt: You know that getcodeobj can lazily trigger deserialization?
18:46 brrt no
18:46 brrt i did not know that
18:46 * nwc10 tests seeming fix for PPC bug
18:46 jnthn OK. You, uh, maybe need to know that. ;)
18:46 jnthn nwc10++
18:47 brrt nwc10++ indeed :-) /me is very curious
18:47 brrt ok, what difference does that make? (the fact that getcodeobj may trigger deserialization?)
18:49 jnthn That if you access it and it's null, you may need to do something
18:49 nwc10 brrt: it's a bug from a commit from 2 months ago that broke NQP on PPC
18:49 nwc10 it's nothing to do with JITs
18:50 brrt ah i see
18:51 jnthn brrt: How do you JIT it?
18:51 jnthn Calling MVM_frame_get_code_object?
18:52 brrt euh, let me see how timotimo did it, he wrote the actual patch
18:53 jnthn OK. The func above is the correct way
18:55 brrt https://gist.github.com/bdw/ce249b2ba2849d4f17e6
18:55 brrt yeah, thats basically what he did
18:55 brrt it seemed good to me
19:00 dalek MoarVM: 1ded4a3 | jonathan++ | src/core/op (2 files):
19:00 dalek MoarVM: getlexouter is not inlinable.
19:00 dalek MoarVM:
19:00 dalek MoarVM: Otherwise we break the "doesn't access non-static outer lexicals"
19:00 dalek MoarVM: invariant on inlining.
19:00 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1ded4a3696
19:01 jnthn Which we might be able to lift with further analysis, but argh brane. :)
19:01 brrt :-)
19:01 TimToady so, I should probably get rid of my default there
19:01 FROGGS o/
19:02 TimToady or we should optimize default away if it's the last thing
19:02 TimToady well, maybe not in a CATCH...
19:04 jnthn I think Moar does know enough about outers and stuff to make smarter decisoins here.
19:05 * brrt is only slightly annoyed at a blog saying 'it is like gc but without the expense (reference counting)'
19:07 brrt :-o (moarvm+asan now only takes 84s for stage parse on my machine)
19:07 brrt which is fast
19:08 Ven joined #moarvm
19:08 jnthn Folks are really great at forgetting that decrementing a refcount is O(data-structure-size) if you get go of the root of an aggregate...
19:08 jnthn *let go
19:09 jnthn Not to mention that maintaining the counts when there are threads involved is an atomic operation.
19:09 jnthn And then a bunch of analysis to elide them.
19:10 brrt yeah, and as i keep saying
19:10 brrt threads
19:10 brrt i.e. when you have multiple threads, refcount updates must be atomic or synchronissed
19:11 jnthn You can coalesce the refcount updates to some degree if you're clever about it
19:11 jnthn But yeah...it's no free lunch.
19:12 jnthn It *does* win you timeliness.
19:12 brrt anyway, applying that patch results in dying in the rakudo sanity tests
19:12 brrt which is awesome because that's precisely what i need
19:12 * brrt nods
19:12 brrt which is probably why it's a good fit for UI thingies
19:13 jnthn But tbh I've found my timely things are greatly fewer than my other objects, and I don't mind calling them out with some resource management construct (like using in C#)
19:13 nwc10 jnthn: first fix for PPC is http://paste.scsys.co.uk/420304
19:13 nwc10 not even tested on x86_64 yet
19:13 nwc10 may introduce casting warnings
19:14 jnthn OK
19:14 jnthn I'm heading to bed soon, so will look at it tomorrow
19:14 nwc10 anyway, I merely "think" that it should work
19:15 nwc10 If I've guessed "understanding" correctly, then the previous commit should only have changed to i16 on the new bytestream
19:15 nwc10 not the facts
19:16 jnthn The patch looks legit.
19:17 nwc10 all the best mistakes do too
19:17 jnthn ;)
19:18 brrt bloody asan
19:18 nwc10 keeping programmers honest?
19:19 brrt but not telling me why it's broken
19:19 brrt :-)
19:19 brrt (i'm complaining because i can't seem to get a stacktrace. a segv i can deal with myself)
19:21 nwc10 put a breakpoint on __asan_report_error ?
19:23 brrt or start the script with gdb
19:23 brrt remind me to fix the create-moar-runner.pl script to take a debugger as an argument
19:29 * TimToady keeps wondering why MVM_exception_throw_adhoc doesn't include a backtrace
19:29 brrt it should show a backtrace?
19:29 TimToady there's nothing quite so disgusting as getting "Cannot look up attributes in a type object" with no locational information at all
19:30 brrt hmm
19:30 brrt it should be able to show a backtrace
19:31 TimToady and there are 13 places with the identical message
19:36 brrt what i usually do is run the thing under gdb and catch MVM_exception_throw_adhoc
19:36 brrt however, that doesn't always work
19:37 * brrt is afk for tonigh
19:37 brrt t
19:37 brrt left #moarvm
19:57 Ven joined #moarvm
20:04 Ven joined #moarvm
20:05 cognome joined #moarvm
20:46 Ven joined #moarvm
21:03 itz joined #moarvm
21:41 ggoebel111119 joined #moarvm
21:48 itz_ joined #moarvm
21:49 nine How can I call a method whose name is in $name on object $obj?
21:50 diakopte1 $obj.$name() I think
21:50 diakopte1 or at least $obj."$name"()
21:51 nine Ah yes, $obj."$name"() works, thanks.
21:56 diakopte1 yeah I forgot $obj.$var() means execute the (hopefully executable) object in $var with $obj as its invocant
21:57 diakopte1 same as $var($obj:) iirc
22:03 cognome joined #moarvm
22:11 _sri joined #moarvm
22:11 ingy joined #moarvm
22:36 cognome joined #moarvm
22:46 cognome_ joined #moarvm
23:16 avuserow_ joined #moarvm
23:37 itz joined #moarvm
23:51 itz_ joined #moarvm
23:58 itz joined #moarvm

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