[foreign-jextract] RFR 8237577 minimal jextract tool on jextract API

Ty Young youngty1997 at gmail.com
Wed Jan 22 02:31:21 UTC 2020


On 1/21/20 10:38 AM, Maurizio Cimadamore wrote:
>
> On 21/01/2020 16:32, Ty Young wrote:
>>
>> On 1/21/20 10:11 AM, Maurizio Cimadamore wrote:
>>>
>>> On 21/01/2020 16:09, Ty Young wrote:
>>>>
>>>> On 1/21/20 7:07 AM, sundararajan.athijegannathan at oracle.com wrote:
>>>>> Please review.
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8237577
>>>>>
>>>>> Webrev: 
>>>>> http://cr.openjdk.java.net/~sundar/minimal_jextract/webrev.00/index.html 
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> -Sundar
>>>>>
>>>>
>>>> Is this the same jextract tool used to generate the clang code then?
>>>
>>> Yes - a bit more polished version of that.
>>
>>
>> Nice!
>>
>>
>> I assume the command line arguments are the same, correct?
>
> A lot of them have been removed - we'll start simple(r) and see what 
> is really required. But usual commands like -L, -I apply. The 
> filtering option got simpler and now just accepts a regex - so that 
> only symbols defined in an header whose path matches the regex are 
> actually included.
>
> Sundar will soon be adding more tests, so that it will be more clear 
> how these options work.


Right, NVML went from:


jextract -t org.nvidia.nvml -L /usr/lib -lnvidia-ml 
--record-library-path /opt/cuda/targets/x86_64-linux/include/nvml.h -o 
org.nvidia.nvml.jar


to:


jextract -t org.nvidia.nvml -L /usr/lib -l nvidia-ml 
/opt/cuda/targets/x86_64-linux/include/nvml.h


So yeah, only slightly different... and there is no option to compile 
directly to a jar. Not the end of the world but it would be nice if the 
option was readded.


So... first impressions are more or less what I've been expected: lots 
of technical boilerplate. This result was inevitable anyway and isn't 
surprising, TBH. Without a higher level abstraction I don't think I'm 
personally going to be using this as-is. Hopefully the jextract API 
really lets me improve things otherwise I think I'm going to do 
everything myself so that the bindings more closely resemble the old API.


Not only that but... it uses Linux Sysv layouts which may cause issues 
on Windows. The expectation by Nvidia is that you build and compile your 
software using the Linux headers on Linux and then adapt for 
Windows(same library, different name and OS). The current jextract 
behavior isn't desirable.


P.S. wasn't the ability to detect platform ABI added? What 
module/package is it in?




>
> Maurizio
>
>>
>>
>>>
>>> Maurizio
>>>
>>>>
>>>>


More information about the panama-dev mailing list