From: Jamison Hope <jrh@theptrgroup.com>
To: Per Bothner <per@bothner.com>
Cc: Vasantha Ganesh <vasanthaganesh.k@gmail.com>, kawa@sourceware.org
Subject: Re: Question, GSoC Idea `Easier Access to Native Libraries using JNA/JNR"
Date: Sun, 02 Apr 2017 21:08:00 -0000 [thread overview]
Message-ID: <D059589E-C9B2-4E8F-A9DB-F0700F2D2ED6@theptrgroup.com> (raw)
In-Reply-To: <30c20dfb-bf03-fdb4-fbcb-3e963d780cdf@bothner.com>
On Apr 2, 2017, at 11:12 AM, Per Bothner <per@bothner.com> wrote:
> On 04/02/2017 04:07 AM, Vasantha Ganesh wrote:
>> I have been trying to write a proposal for ``Easier Access to Native
>> Libraries using JNA/JNR" idea for my GSoC project.
>>
>> The access to native libraries is available through popular libraries
>> such as JNA and JNR. Access to native libraries in Kawa is just like
>> any other Java library in a very consistent way (strengths of Kawa?).
>>
>> I tried looking into the Ruby wrappers. JRuby is trying to make their
>> FFI API compliant with other implementations. So that Code on JRuby
>> can run in the same way as other Ruby implementations.
>>
>> Common lisp is trying to do something similar with CFFI. Common lisp
>> implementations are trying to make their code that can run on other
>> implementations in the same way. This calls for a common API (CFFI).
>
> Looks like you've done some good research.
>
>> But in scheme we are not trying to be compliant with any other Scheme
>> implementations. Take Guile and Kawa for example. Guile code does not
>> necessarily run on Kawa. Also, Guile has its own FFI.
>>
>> These are just my views. I would like to know the motivation of this
>> project because I'm fuzzy about the usefulness of this project.
>
> I'm afraid I haven't JNA or JNR myself, so I don't know firsthald how
> useful they are, or how much a Kawa binding would help.
>
> What was an open question was whether a Kawa wrapper (i.e. some
> well-design Scheme procedures and/or macros) would make JNA or JNR
> easier to use. You've suggested that it probably wouldn't. Or at
> least we don't have enough experience with possible "pain points"
> to identify areas where a Kawa wrapper would make using JNR
> noticeable easier or more pleasant, partly because Kawa already makes
> it very easy and pleasant to use the Java API as-is. Right?
I haven't used JNR, but I have used JNA (well, JNAerator). Using
it directly from Kawa is not terrible, you just have to define a
class with one or more static #!native methods, and a static
initializer that calls com.sun.jna.Native:register() passing the
name of the native library:
(define-simple-class LibC ()
(allocation: 'static init: (com.sun.jna.Native:register "c"))
((printf s::String)::int allocation: 'static #!native)
((clock)::long allocation: 'static #!native))
LibC:printf
=>
int LibC.printf(String)
(LibC:printf "Hello\nWorld\n")
=>
Hello
World
12
(LibC:clock)
=>
1677346
The advantage of a Kawa wrapper would be able to do something
that looked more like (perhaps) a R7RS library, or maybe to
permit #!native as the body of an ordinary named procedure:
(define (printf s::String)::int #!native)
(But we would need some way to provide the call to
Native.register() in there.)
Just my $0.02.
--
Jamison Hope
The PTR Group
www.theptrgroup.com
prev parent reply other threads:[~2017-04-02 21:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-02 11:07 Vasantha Ganesh
2017-04-02 15:12 ` Per Bothner
2017-04-02 21:08 ` Jamison Hope [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D059589E-C9B2-4E8F-A9DB-F0700F2D2ED6@theptrgroup.com \
--to=jrh@theptrgroup.com \
--cc=kawa@sourceware.org \
--cc=per@bothner.com \
--cc=vasanthaganesh.k@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).