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
15 lines
723 B
Plaintext
15 lines
723 B
Plaintext
$ java --enable-native-access=ALL-UNNAMED -cp build/classes demo.Hello
|
|
sqlite3_libversion() = 3.45.1
|
|
returned segment byteSize = 9223372036854775807
|
|
sqlite3_libversion_number() = 3045001
|
|
sqlite3_sourceid() = 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1
|
|
|
|
$ java --enable-native-access=ALL-UNNAMED -Djextract.trace.downcalls=true -cp build/classes demo.Hello
|
|
sqlite3_libversion()
|
|
sqlite3_libversion() = 3.45.1
|
|
returned segment byteSize = 9223372036854775807
|
|
sqlite3_libversion_number()
|
|
sqlite3_libversion_number() = 3045001
|
|
sqlite3_sourceid()
|
|
sqlite3_sourceid() = 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1
|