Skip to content

Releases: jni-rs/jni-sys

v0.4.0

25 Sep 21:49
@rib rib
Compare
Choose a tag to compare

It's alive! 😃

It's been about 6 years since the last release and although that's generally been OK, since the JNI API doesn't change that frequently, there have been a number of paper cuts adding up that this release hopefully helps to address.

Thanks to @sfackler for transferring the repo to the https://github.com/jni-rs Github organisation where we can hopefully keep the flame alive.

The most notable changes are that jboolean is now an alias for bool and that JNINativeInterface_ is now a union that namespaces the functions based on the JNI version when each function was added to the spec. Please see below for more details.

Added

  • Added JNI_VERSION_9, JNI_VERSION_10, JNI_VERSION_19, JNI_VERSION_20 and JNI_VERSION_21 constants
  • Added GetModule() to JNINativeInterface (#22)
  • IsVirtualThread() to JNINativeInterface (#32)
  • Implemented Debug trait for all types (#31)
  • Added support for no_std environments (#12)

Changed

  • jboolean is now an alias for bool instead of u8 (#23)

  • The JNIInvokeInterface_ and JNINativeInterface_ structs were turned into unions that namespace functions by version (#28):

    This makes it much clearer what version of JNI you require to access any function safely.

    So instead of a struct like:

    struct JNINativeInterface_ {
        pub reserved0: *mut c_void,
        ..
        pub GetVersion: unsafe extern "system" fn(env: *mut JNIEnv) -> jint,
        ..
        pub NewLocalRef: unsafe extern "system" fn(env: *mut JNIEnv, ref_: jobject) -> jobject,
    }

    there is now a union like:

    union JNINativeInterface_ {
        v1_1: JNINativeInterface__1_1,
        v1_2: JNINativeInterface__1_2,
        reserved: JNINativeInterface__reserved,
    }

    And you can access GetVersion like: env.v1_1.GetVersion and access NewLocalRef like: env.v1_2.NewLocalRef.

    Each version struct includes all functions for that version and lower, so it's also possible to access GetVersion like env.v1_2.GetVersion.

  • Function pointers are no longer wrapped in an Option<> (#25)

New Contributors

Full Changelog: v0.3.0...v0.4.0

v0.3.0

21 Jul 03:05
Compare
Choose a tag to compare
  • jvalue is now properly a union.
  • Default impls have been removed from structs.

v0.2.5

23 Jun 17:24
Compare
Choose a tag to compare
  • Make jvalue's field public again to fix back compat break.

v0.2.4

23 Jun 05:41
Compare
Choose a tag to compare
  • Add JNI_GetDefaultJavaVMInitArgs and JNI_GetCreatedJavaVMs.

v0.2.3

21 Jun 20:40
Compare
Choose a tag to compare
  • Fix calling convention on 32 bit Windows.

v0.2.2

02 Jan 17:25
Compare
Choose a tag to compare
  • Add JNI_CreateJavaVM

v0.2.1

29 Nov 06:40
Compare
Choose a tag to compare
  • Fix regression in FatalError signature

v0.2.0 (yanked)

29 Nov 01:26
Compare
Choose a tag to compare
  • Drop libc dependency
  • Add JNI_VERSION constants
  • Wrap function pointers in Options.