We have some experience with jnr-ffi: daffodil-vscode uses omega-edit via
jnr-ffi bindings for the extension's data editor. See
https://github.com/ctc-oss/omega-edit/blob/4965d83ae40284ec8cf7af71d7c692060dbd21fb/server/scala/api/src/main/scala/com/ctc/omega_edit/FFI.scala#L262
for the binding of the native lib into Scala.

On Tue, Jan 16, 2024 at 3:42 PM John Wass <jwa...@gmail.com> wrote:

> Hi Mike-
>
> Take a look at
>
> https://github.com/jni-rs/jni-rs
>
> There is a good example in the repo.
>
> I'd compare that against jnr-ffi, which is nice in general for jni work.
>
> https://github.com/jnr/jnr-ffi
>
> -john
>
>
> On Tue, Jan 16, 2024, 08:42 Mike Beckerle <mbecke...@apache.org> wrote:
>
> > John, what do you (or anyone?) know about interfacing Rust and JVM
> > languages like Java/Scala? A quick search pulled back nothing other than
> > Java JNI and/or sending GPBs back and forth to micro-services.
> >
> > I'm wondering if incrementally rewriting parts of the existing, slow,
> Scala
> > backend in Rust is feasible, or if this is not a smooth enough pathway.
> >
> > For example, I suspect that Daffodil's lexical analyzer could use a
> > rewrite. It is one of the oldest pieces of code in Daffodil, and was
> > created back when myself and others were really still Scala newbies, and
> we
> > were just learning the implications for the lexical analyzer design I.e.,
> > discovering them the hard way, realizing the design was not sufficiently
> > general, adding more tweaks (which could be suboptimal), etc.  We had not
> > yet developed the philosophy that the backend code should be "java like",
> > and not use scala idioms that are less efficient.
> >
> > But if we're rewriting parts of the back-end and the rewrites are
> intended
> > to be high performance, then it would seem the right language to use is
> > something like Rust.
> >
> > However, this requires that we're able to call it efficiently and that
> the
> > bridge from scala to that rust code is not so expensive as to eliminate
> the
> > performance gain.
> >
> >
> >
> > On Fri, Jan 12, 2024, 5:52 PM Interrante, John A (GE Aerospace, US) <
> > john.interra...@ge.com> wrote:
> >
> > > We developed a fork of the C backend that generated VHDL, but I can't
> get
> > > into the implementation details here.  I think the line between Rust
> and
> > C
> > > is two-fold: how many machine architectures Rust has been ported to,
> and
> > > how often you need to call C functions from Rust, which means having to
> > use
> > > Rust's Foreign Function Interface.  Otherwise, Rust is better than C
> for
> > > new code and Daffodil should have a Rust backend.
> > >
> > > -----Original Message-----
> > > From: Mike Beckerle <mbecke...@apache.org>
> > > Sent: Friday, January 12, 2024 5:50 AM
> > > To: dev@daffodil.apache.org
> > > Subject: EXT: Re: Rust vs. C backend
> > >
> > > what I meant by "What did you mean by the phrase “basis for generating
> > > VHDL or System Verilog?”
> > >
> > > I suppose I was thinking you had a fork of the C backend that created
> > > Verilog/VHDL, but perhaps the pathway is via the C code output, which
> is
> > > then translated into Verilog/VHDL?
> > >
> > > In any case we're hearing lots more complaints about performance of
> > > Daffodil's scala back-end (and missing optimizations in the middle
> > phases).
> > >
> > > Generating C code won't work for Cyberian software-based applications
> as
> > a
> > > memory-safe language is required in these solutions. I will have to
> learn
> > > more about Rust. We need a memory safe language that lets you control
> the
> > > data representations far better than Java/Scala and JVM languages. I am
> > > curious where the line is between Rust and C, i.e., what kinds of
> things
> > > are possible in C that aren't possible in Rust.
> > >
> > > On Thu, Jan 11, 2024 at 5:01 PM Interrante, John A (GE Aerospace, US) <
> > > john.interra...@ge.com> wrote:
> > >
> > > > Hi Mike,
> > > >
> > > > My view is that when the goal is to generate parsers and unparsers
> > > > from fixed format binary data DFDL schemas, compile them to native
> > > > machine code, and execute the machine code on CPUs, Daffodil should
> > > > generate Rust.  We would have preferred Rust when we started the C
> > > > code generator work.  Rust is memory safe, type safe, etc. – but it
> > > > was not available for our phase 1 target CPU.
> > > >
> > > > Creating a Rust backend makes sense, although we don’t think there is
> > > > a Rust to hardware path – at least none that we are aware of.  What
> > > > did you mean by the phrase “basis for generating VHDL or System
> > Verilog?”
> > > >
> > > > John
> > > >
> > > > From: Mike Beckerle <mbecke...@apache.org>
> > > > Sent: Thursday, January 11, 2024 5:13 AM
> > > > To: John Interrante <jinterra...@apache.org>
> > > > Cc: dev@daffodil.apache.org
> > > > Subject: EXT: Rust vs. C backend
> > > >
> > > > John,
> > > >
> > > > What's your view of generating Rust vs. Generating C from DFDL?
> > > >
> > > > Those of us working in Cyberia, well, the edict has been issued that
> > > > only memory-safe languages/runtimes are allowed to reduce risk of
> > > > cyber-attacks via things like libc flaws.
> > > >
> > > > Seems to me that Rust is the lowest level language that would be
> > > > acceptable
> > > >
> > > > I believe ultimately, the goal is to generate a useful software
> > > > implementation that does not compromise on performance, and to be a
> > > > basis for generating VHDL or System Verilog.
> > > >
> > > > I imagine you've given this some thought you can share.
> > > > Mike Beckerle
> > > > Apache Daffodil PMC | daffodil.apache.org<
> http://daffodil.apache.org/>
> > > > OGF DFDL Workgroup Co-Chair |
> > > > www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
> > > > <http://www.ogf.org/ogf/doku.php/standards/dfdl/dfdl>
> > > > Owl Cyber Defense | www.owlcyberdefense.com<
> > > > http://www.owlcyberdefense.com/>
> > > >
> > >
> >
>

Reply via email to