jextract-25 early-access build (25-jextract+2-4) on JDK 25.0.5+8 against SQLite 3.45.1: 25 functions and 13 constants generated into 4 committed files (the whole header would be 83 files), a small Db wrapper, the four arena kinds used wrongly on purpose, ADDRESS vs C_POINTER zero-length vs unbounded segments and the SIGSEGV from getString on a NULL pointer, sqlite3_open out-parameter, return codes to exceptions, a sqlite3_exec upcall and the VM exit when it throws, the JDK 25 native-access warning and --illegal-native-access=deny, library loading failures, and a JMH benchmark of FFM vs hand-written JNI vs plain Java (indicative only: shared 2-CPU machine). Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b6Kg9RWSTJzyz6KP9X
27 lines
1.2 KiB
Plaintext
27 lines
1.2 KiB
Plaintext
$ scripts/gen.sh
|
|
$ find generated -name '*.java' | wc -l
|
|
4
|
|
$ wc -l $(find generated -name '*.java') | sort -n
|
|
63 generated/demo/sqlite/sqlite3_h$shared.java
|
|
69 generated/demo/sqlite/sqlite3_bind_text$x0.java
|
|
73 generated/demo/sqlite/sqlite3_exec$callback.java
|
|
1662 generated/demo/sqlite/sqlite3_h.java
|
|
1867 total
|
|
$ jextract --output <tmp> -t demo.sqlite.full -l sqlite3 /usr/include/sqlite3.h # no filters: the whole header
|
|
warnings: 14
|
|
sqlite3.h:272:16: warning: Skipping sqlite3 (type Declared(sqlite3) is not supported)
|
|
sqlite3.h:4045:16: warning: Skipping sqlite3_stmt (type Declared(sqlite3_stmt) is not supported)
|
|
files: 83
|
|
lines: 44295
|
|
bytes: 1339454
|
|
lines in the one big header class: 22335
|
|
$ grep -o 'public static [A-Za-z.]* sqlite3_open[a-z_0-9$]*(' generated/demo/sqlite/sqlite3_h.java | sort -u
|
|
public static FunctionDescriptor sqlite3_open$descriptor(
|
|
public static FunctionDescriptor sqlite3_open_v2$descriptor(
|
|
public static MemorySegment sqlite3_open$address(
|
|
public static MemorySegment sqlite3_open_v2$address(
|
|
public static MethodHandle sqlite3_open$handle(
|
|
public static MethodHandle sqlite3_open_v2$handle(
|
|
public static int sqlite3_open(
|
|
public static int sqlite3_open_v2(
|