Oh yeah. I remember now you mentioned this before.
Does that mean you already have some general rust<-->j bindings working?



On Tue, Dec 7, 2021 at 10:54 AM John Baker <[email protected]> wrote:

> I'm interested in this. One of my little side projects is calling rust
> binaries from J and J from rust binaries.
>
> A wiki page that gives current examples of J calling c,rust, (anything
> that compiles), et cetera ... with links to repos
> and a little "FFI for Dummies" would be a valuable addition.
>
> One thing Marshall said about BQN in his "APL for your Flying Saucer"
> pages was the
> decision to use external libraries for things like complex numbers.
> This is good approach but
> It requires good examples and documentation illustrating how it's done.
>
> jdb
>
> On Tue, Dec 7, 2021 at 6:32 AM Michal Wallace <[email protected]>
> wrote:
> >
> > Aha! It's working now. The basic flow was right, I just needed a lot of
> > fiddling with the rust translations of the types.
> >
> > Thanks, everyone!
> >
> >
> >
> >
> > On Tue, Dec 7, 2021 at 7:18 AM Michal Wallace <[email protected]>
> > wrote:
> >
> > > Nice! My actual goal is to get J talking to godot (game engine). As it
> > > happens, rust and haskell are apparently two of the most-developed
> languages
> > > for writing godot extensions, so if this fails I may try your haskell
> > > bindings.
> > >
> > > I got some rudimentary free pascal bindings working without much hassle
> > > many years ago, so I think my problem really
> > > is just not understanding the rust side, but I could have also
> > > mis-translated something on the J end and just don't see it yet.
> > >
> > > (as for the crash, that's pretty much what i get too.) I think the
> j.so or
> > > j.dylib library needs to be in the
> > > current directory at the moment, and you'd need to change line 13 to
> tell
> > > it what the filename is.
> > >
> > > The debugger tells me this, but I have no idea what I'm looking at
> here:
> > >
> > > ; id = {0xffffffff}, range = [0x00000001800fe110-0x00000001800fe260),
> > > name="JDo"
> > > ; Source location: unknown
> > > 7FFCD598E110: 56                         pushq  %rsi
> > > 7FFCD598E111: 57                         pushq  %rdi
> > > 7FFCD598E112: 53                         pushq  %rbx
> > > 7FFCD598E113: 48 83 EC 40                subq   $0x40, %rsp
> > > 7FFCD598E117: C5 F8 29 74 24 30          vmovaps %xmm6, 0x30(%rsp)
> > > 7FFCD598E11D: 48 8B 05 14 DC 3B 00       movq   0x3bdc14(%rip), %rax
> > > 7FFCD598E124: 48 31 E0                   xorq   %rsp, %rax
> > > 7FFCD598E127: 48 89 44 24 28             movq   %rax, 0x28(%rsp)
> > > 7FFCD598E12C: 48 89 4C 24 20             movq   %rcx, 0x20(%rsp)
> > > 7FFCD598E131: 8A 81 ED 01 00 00          movb   0x1ed(%rcx), %al
> > > 7FFCD598E137: 84 C0                      testb  %al, %al
> > > 7FFCD598E139: 0F 85 C6 00 00 00          jne    0x7ffcd598e205  ;
> <+245>
> > > 7FFCD598E13F: 80 B9 E0 52 00 00 02       cmpb   $0x2, 0x52e0(%rcx)
> > >
> > > I think maybe this is the start (??) of the code for JDo, so it might
> be
> > > the parameter is an invalid pointer, but I don't know how to interpret
> this.
> > >
> > >
> > > On Mon, Dec 6, 2021 at 8:47 PM Vanessa McHale <[email protected]>
> wrote:
> > >
> > >> Hm, I’m not familiar with the dlopen crate, had you used it before? I
> > >> can’t tell what’s going on under the hood!
> > >>
> > >> I was able to get FFI working by looking at
> > >>
> https://github.com/jsoftware/stats_jserver4r/blob/4c94fc6df351fab34791aa9d78d158eaefd33b17/source/lib/j2r.c
> > >> <
> > >>
> https://github.com/jsoftware/stats_jserver4r/blob/4c94fc6df351fab34791aa9d78d158eaefd33b17/source/lib/j2r.c
> >
> > >> and
> > >>
> https://github.com/jsoftware/stats_jserver4r/blob/4c94fc6df351fab34791aa9d78d158eaefd33b17/source/lib/r2j.c
> > >> <
> > >>
> https://github.com/jsoftware/stats_jserver4r/blob/4c94fc6df351fab34791aa9d78d158eaefd33b17/source/lib/r2j.c
> > >> >
> > >>
> > >> I got Haskell bindings: https://github.com/vmchale/j-hs <
> > >> https://github.com/vmchale/j-hs> but BUT interestingly one test
> fails on
> > >> older GHCs… can’t tell why and I never did get around to debugging it.
> > >>
> > >> BTW I get
> > >>
> > >> error: test failed, to rerun pass '--lib'
> > >>
> > >> Caused by:
> > >>   process didn't exit successfully:
> > >> `/private/tmp/jlang-rs/target/debug/deps/jlang-1c90c81a3f6fae1c
> > >> --nocapture` (signal: 11, SIGSEGV: invalid memory reference)
> > >>
> > >> on mac
> > >>
> > >> > On Dec 6, 2021, at 7:22 PM, bill lam <[email protected]> wrote:
> > >> >
> > >> > I don't know rust at all. What exactly do you expect and how it
> failed?
> > >> >
> > >> > On Tue, 7 Dec 2021 at 9:10 AM Michal Wallace <
> [email protected]>
> > >> > wrote:
> > >> >
> > >> >> ... It was not a successfu attempt. :)
> > >> >>
> > >> >> https://github.com/tangentstorm/jlang-rs/blob/main/src/lib.rs
> > >> >>
> > >> >> The basic plumbing seems to work unless I actually call JDo() on
> line
> > >> 75
> > >> >> here.
> > >> >> Any rust fans out there who might be able to help me figure this
> out?
> > >> >>
> > >> >> -Michal
> > >> >>
> ----------------------------------------------------------------------
> > >> >> For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >> >>
> > >> >
> ----------------------------------------------------------------------
> > >> > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >>
> > >> ----------------------------------------------------------------------
> > >> For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >>
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>
> --
> John D. Baker
> [email protected]
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to