New jextract build released (22-jextract+6-47)

Jorn Vernee jorn.vernee at oracle.com
Thu Nov 7 14:32:30 UTC 2024


Hey all,

We just published a new jextract build. We've added a new build for the 
Linux/AArch64 platform. Besides that, these are the other user-facing 
changes that are worth highlighting:

7903782: clang warnings and diagnostics below warning level should be 
logged as well [1]
7903779: unify logger messages to show position whenever possible [2]
7903776: jextract generates uncompilable code when C identifier with the 
name from "java.lang" classes is used [3]
7903777: jextract layout for enum with big constant values is wrong [4]
7903755: multi header support and special syntax for header file [5]

I want to call special attention to the last entry in this list: It is 
no longer required to specify the full path of the header file you want 
to extract. The header file just has to be findable in one of the 
locations specified through the -I options. This should simplify the 
command line somewhat. It is also possible to use the form <foo.h> to 
pass a file to jextract (given sufficient shell quoting [6]). Doing this 
mimics the behavior of a header file included like #include <foo.h> 
within a C source file, which looks in a standard list of system 
directories for the included header file. Though the exact directories 
that are searched is platform dependent, it's possible to show the 
header file search directories by using a compile_flags.txt [7] file 
with the --verbose option. For example, by default, on my Windows 
machine, this prints something like:

#include "..." search starts here:
#include <...> search starts here:
  C:\<path to>\jextract\runtime\conf\jextract
  C:\<path to>\<current directory>
  C:\Program Files\Microsoft Visual 
Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um
  C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt
End of search list.

This latest version of jextract still targets Java 22 as a baseline, but 
the generated bindings will work on Java 23 as well. If you find any 
issues with the new build, please report them back to this mailing list 
(jextract-dev at openjdk.org).

Thanks,
Jorn

[1]: https://bugs.openjdk.org/browse/CODETOOLS-7903782
[2]: https://bugs.openjdk.org/browse/CODETOOLS-7903779
[3]: https://bugs.openjdk.org/browse/CODETOOLS-7903776
[4]: https://bugs.openjdk.org/browse/CODETOOLS-7903777
[5]: https://bugs.openjdk.org/browse/CODETOOLS-7903755
[6]: '<foo.h>' in most shells, ^^<foo.h^^> in cmd.exe
[7]: 
https://github.com/openjdk/jextract/blob/master/doc/GUIDE.md#additional-clang-options



More information about the jextract-dev mailing list