Open
Conversation
405ca78 to
415103b
Compare
b93b3eb to
16f170c
Compare
DannysBabygirl
approved these changes
Feb 18, 2026
DannysBabygirl
approved these changes
Feb 18, 2026
16f170c to
d5a5bac
Compare
d5a5bac to
3e9ac82
Compare
3e9ac82 to
178ce21
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v4→v6v4→v5v4→v70.13→0.159.3.0→9.3.1v4→v50.21.1→0.22.00.4.27→0.4.29v5→v71.0.0-alpha07→1.0.0-alpha112.10.5→2.11.118.9.0→18.10.02.9.4→2.10.01.5.0→1.5.11.5.0→1.5.11.1.0→1.2.01.6.0-alpha09→1.6.0-beta011.6.0-alpha09→1.6.0-beta011.3.0→1.4.01.10.0→1.10.42.4.0-alpha07→2.4.0-beta011.9.3→1.10.48.0.0→8.2.14.16→4.16.12.11.0→3.0.02.11.0→3.0.04.12.0→5.3.21.0.0→1.0.11.0.0→1.0.11.8.0→1.9.21.8.0→1.9.21.8.0→1.9.21.5.0-alpha10→1.5.0-alpha151.9.0→1.10.01.9.0→1.10.02.3.0→2.3.102.3.4→2.3.62.3.0→2.3.102.3.0→2.3.102.3.0→2.3.102.3.0→2.3.102.59→2.59.22.59→2.59.22.59→2.59.22.59→2.59.233.5.0-android→33.5.0-jre17.3.0→17.4.01.0.0-alpha1→1.0.0-beta134.4.0→34.10.01.1.7→1.2.01.1.7→1.2.01.0.1→1.2.02.11.0→3.0.02025.12.00→2026.02.013.3.0→3.4.03.3.0→3.4.03.3.0→3.4.01.5.2→1.5.31.5.2→1.5.31.5.2→1.5.31.5.2→1.5.31.5.0-alpha01→1.5.0-alpha039.0.0-alpha06→9.0.11.12.1→1.12.41.1.0→1.2.09.0.0→9.0.19.0.0→9.0.19.0.0→9.0.19.0.0→9.0.17.0.2→8.2.1Release Notes
actions/checkout (actions/checkout)
v6Compare Source
v5Compare Source
actions/setup-java (actions/setup-java)
v5Compare Source
actions/upload-artifact (actions/upload-artifact)
v7Compare Source
v6Compare Source
v5Compare Source
rust-mobile/android_logger-rs (android_logger)
v0.15.0Compare Source
What's Changed
os::android-apiscategory by @MarijnS95 in #78CStr::from_ptr()withCStr::from_bytes_with_nul()by @MarijnS95 in #82DebugforConfigandAndroidLoggerby @MarijnS95 in #81cargo fmt --checkto ensure code is always properly formatted by @MarijnS95 in #86New Contributors
Full Changelog: rust-mobile/android_logger-rs@0.14.1...v0.15.0
v0.14.1Compare Source
gradle/gradle (gradle)
v9.3.1: 9.3.1Compare Source
This is a patch release for 9.3.0. We recommend using 9.3.1 instead of 9.3.0.
The following issues were resolved:
Read the Release Notes
Upgrade instructions
Switch your build to use Gradle 9.3.1 by updating your wrapper:
See the Gradle 9.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading.
For Java, Groovy, Kotlin and Android compatibility, see the full compatibility notes.
Reporting problems
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.
gradle/actions (gradle/actions)
v5Compare Source
jni-rs/jni-rs (jni)
v0.22.2Compare Source
Note: although no breaking API change was made in this release there were some important fixes
made, including a few non-trivial changes to how exceptions are handled and some important safety /
soundness fixes made in the re-exported
jni-macros.For these reasons I'm going to again yank the previous 0.22.1 release after this is published,
again taking into account that 0.22.1 was itself only released very recently and it should still be
relatively unlikely that anyone has strictly locked in a 0.22.1 dependency.
Another benefit to yanking 0.22.1 is that it allows me to pin the
jni-macrosdependency via=0.22.2in this release so that in future releases I don't need to be worried that a newjni-macrosrelease needs to be backwards compatible with all priorjnireleases (so macros cantake advantage of new
jnifeatures).Hopefully things will be smoother moving forward, now that more people have been starting to update
to 0.22.x and there are more people testing it.
Added
Adds bindings for the following
java.langerrors / exceptions (#767):JArrayIndexOutOfBoundsException(java.lang.ArrayIndexOutOfBoundsException)JArrayStoreException(java.lang.ArrayStoreException)JClassCircularityError(java.lang.ClassCircularityError)JClassFormatError(java.lang.ClassFormatError)JExceptionInInitializerError(java.lang.ExceptionInInitializerError)JClassNotFoundException(java.lang.ClassNotFoundException)JIllegalArgumentException(java.lang.IllegalArgumentException)JIllegalMonitorStateException(java.lang.IllegalMonitorStateException)JInstantiationException(java.lang.InstantiationException)JLinkageError(java.lang.LinkageError)JNoClassDefFoundError(java.lang.NoClassDefFoundError)JNoSuchFieldError(java.lang.NoSuchFieldError)JNoSuchMethodError(java.lang.NoSuchMethodError)JNumberFormatException(java.lang.NumberFormatException)JOutOfMemoryError(java.lang.OutOfMemoryError)JRuntimeException(java.lang.RuntimeException)JSecurityException(java.lang.SecurityException)JStringIndexOutOfBoundsException(java.lang.StringIndexOutOfBoundsException)Added
AttachmentExceptionPolicyenum to control how Java exceptions are handled when attaching a thread (#768).Changed
cesu8crate withsimd_cesu8for MUTF-8 encoding, gaining SIMD acceleration andno_stdcompatibilitypastecrate (#752)attach_current_thread*APIs immediately returnErr(JavaException)if a Java exception is pending, so they don't have the side effect of clearing exceptions not thrown in the given closure (#756)proc-macro-cratedependency from thejni-macroscrate (#758)jni::errors::Error(#762)JavaVM::attach_current_thread*APIs stash + re-throw pending exceptions so they can be run reliably, instead of bailing early with aJavaExceptionerror (e.g. needed inDropimplementations) (#768)Fixed
Env::get_[static_]method/field_idAPIs now correctly clear + map internal exceptions toError::Method/FieldNotFounderrors (#748)Global/Weak::Dropno longer have the side effect of catching/clearing pending exceptions (#749)Env::throw*APIs actually returnErr(JavaException)as the docs state (#755)JStackTraceElementbinding fixed to lookupisNativeMethodinstead ofisNative(#760)bind_java_typeemitsexception_checksbefore JNI calls to avoid undefined behaviour from calling non-exception-safe JNI functions with pending exceptions. (#757)bind_java_typeemitsenv.assert_top()checks to ensure that any new local reference has a lifetime that's associated with the top JNI stack frame (#776)AsRefpointer cast foris_instance_oftypes emitted bybind_java_type(#777)bind_java_typeemitsnullobject checks to prevent calling methods or accessing fields on null objects (#782)bind_java_typeclamps the*APIstruct and native methods trait visibility to that of the binding type (#785)v0.22.1Compare Source
Note: This release fixes several issues found in 0.22.0 which unfortunately required a few breaking changes.
Instead of bumping to 0.23 though, the assumption is that no one will yet be depending on the recently-released
0.22.0 and so we can yank that and have this represent the first 0.22.x release.
Added
Env::exception_catchprovides a convenient way of catching pending Java exceptions and mapping them toError::CaughtJavaException(#736)AttachGuard::detach_with_catchlets you explicitly detach/drop a guard (like::detach()) and catch any pending Java exception as aError::CaughtJavaException(#736).JClass::get_namelets you query the binary name for a class, such asjava.lang.String(#736)Changed
The following APIs have had to be made fallible again, in order to safely check for pending exceptions before calling
JNI functions that are not documented as being safe to call with a pending exception:
Env::get_java_vm(GetJavaVMis not exception safe)Env::version(GetVersionis not exception safe)Env::is_same_object(IsSameObjectis not exception safe)Weak::is_garbage_collected(based onEnv::is_same_object)Weak::is_same_object(deprecated) and (based onEnv::is_same_object)Weak::is_weak_ref_to_same_object (deprecated)(based onEnv::is_same_object)Note: These are a breaking change.
Fixed in #733
JavaVM::attach_current_thread*APIs all finish by callingAttachGuard::detach_with_catchto clear pending Java exceptions - mapping toError::CaughtJavaException(#736)Env::throw*APIs now returnError::JavaExceptionafter throwing and creating a pending exception that must be handled before using JNI further (#738)v0.22.0Compare Source
Added
JavaVM / Thread Attachment APIs
JavaVM::singleton()lets you acquire theJavaVMfor the process when you know that theJavaVMsingleton has been initialized (#595)JavaVM::is_thread_attachedcan query whether the current thread is attached to the Java VM (#570)AttachGuard::from_unownedadded as a low-level (unsafe) way to represent a thread attachment with a rawjni_sys::Envpointer (#570)AttachConfigexposes fine-grained control over thread attachment includingThreadname,ThreadGroupand whether scoped or permanent. (#606)JavaVM::attach_current_thread_guardis a low-level (unsafe) building block for attaching threads that exposes theAttachGuardandAttachConfigcontrol. (#606)JavaVM::attach_current_thread_with_configis a safe building block for attaching threads that hides theAttachGuardbut exposesAttachConfigcontrol. (#606)JavaVM::with_local_frameadded as method to borrow aEnvthat is already attached to the current thread, after pushing a new JNI stack frame (#570, #673)JavaVM::with_top_local_frame_frameadded to borrow aEnvfor the top JNI stack frame (i.e. without pushing a new JNI stack frame) (#570, #673)Reference Type APIs
Referencetrait for all reference types likeJObject,JClass,JString, enablingGlobalandWeakto be generic overReferenceand enabling safe casting and global caching ofJClassreferences. (#596)Reference::lookup_classexposes a cachedGlobal<JClass>for allReferenceimplementations (#612)LoaderContext+LoaderContext::load_classfor loading classes, depending on available context (#612)Env::new_cast_global_refacts likenew_global_refwith a type cast (#612)Env::cast_globaltakes an ownedGlobal<From>and returns an ownedGlobal<To>(#612)Env::new_cast_local_refacts likenew_local_refwith a type cast (#612)Env::cast_localtakes an owned local reference and returns a new type-cast wrapper (owned) (#612)Env::as_castorCast::newborrows anyFrom: Reference(global or local) reference and returns aCast<To>that will Deref into&To(#612)Env::as_cast_uncheckedreturns aCast<To>likeas_cast()but without a runtimeIsInstanceOfcheck (#669)Env::as_cast_raworCast::from_rawborrows a rawjobjectreference and returns aCast<To>that will Deref into&ToCast::new_uncheckedandCast::from_raw_uncheckedlet you borrow a reference with an (unsafe) type cast, with no runtime check::cast_local()methods as a convenience for all reference types, such aslet s = JString::cast_local(obj)constnull()methods for all reference types.Global::null()andWeak::null()construct null references (equivalent toDefault::default()). (#596)JNI Environment APIs
Env::call_nonvirtual_methodandEnv::call_nonvirtual_method_uncheckedto call non-virtual method. (#454)Env::to_reflected_methodandEnv::to_reflected_static_methodfor retrieving the Java reflection API instance for a method or constructor. (#579)Env::throw_new_voidprovides an easy way to throw an exception that's constructed with no message argumentEnv::new_object_type_array<E>lets you you instantiate aJObjectArraywith a given element type likenew_object_type_array::<JString>Env::load_classsupports class lookups via the currentThreadcontext class loader, withFindClassfallback. (#674)MethodSignatureandFieldSignaturetypes have been added for compile-time parsed JNI method and field signaturesNative Method APIs
EnvUnownedis an FFI-safe type that can be used to capture ajni_sys::Envpointer given to native methods and give it a named lifetime (this can then be temporarily upgraded to a&mut Envreference viaEnvUnowned::with_env) (#570)Outcomeis like aResultwith the addition of a thirdPanic()variant, used for careful handling of errors in native methods. (#664)EnvOutcomerepresents anEnvUnowned::with_envoutcome whose errors can be handle, with access to JNI, via anErrorPolicy. (#664)ErrorPolicyis a trait withon_errorandon_panicmethods that can log native method errors or throw them as exceptions. (#664)ThrowRuntimeExAndDefaultis anErrorPolicythat throws any error as aRuntimeException(and returns a default value). (#664)LogErrorAndDefaultis anErrorPolicythat logs errors and returns a default value. (#664)LogContextErrorAndDefaultis anErrorPolicythat logs errors, with a given context string, and returns a default value. (#664)String APIs
New functions for converting Rust
charto and from Javacharandint(#427 / #434)JavaStr/MUTF8Chars,JNIStr, andJNIStringhave several new methods and traits, most notably ato_strmethod that converts to a regular Rust string. (#510 / #512)JNIStrnow implementsDebug,PartialEq,Eq,PartialOrd,OrdandHash(#615)JNIStringnow implementsDebug,PartialEq,Eq,PartialOrd,Ord,HashandClone(#615)PartialEq<&JNIStr> for JNIStringallowsJNIStrandJNIStringto be compared. (#615)From<&JNIStr>andFrom<MUTF8Chars>implementations forJNIString. (#615)JNIStr::from_cstrsafely does a zero-copy cast of aCStrto aJNIStrafter aconstmodified-utf8 encoding validation (#615,#617, #715)JNIStr::to_bytesgives access to a&[u8]slice over the bytes of a JNI string (likeCStr::to_bytes) (#615)java.lang APIs
JClassLoaderas aReferencewrapper forjava.lang.ClassLoaderreferences (#612)JCollection,JSetandJIteratorreference wrappers forjava.util.Collection,java.util.Setandjava.util.Iteratorinterfaces. (#621)JList::remove_itemfor removing a given value, by-reference, from the list (instead of by index). (#713)JList::clearallows a list to be cleared. (#713)JList::is_emptychecks if a list is empty. (#713)JList::as_collectioncasts a list into aJCollection(#713)JObjectArray::newlets you construct aJObjectArray<E>with strong element type parameterization, instead ofEnv::new_object_array(#657 + #688)JObjectArray::get/set_elementlet you get and set array elements as methods on the array. (#654)JPrimitiveArray::newlets you construct aJPrimitiveArray<E>, consistent withJObjectArray::new(#688)JStackTraceElementgives access to stack frame info within a stack trace, like filename, line number etc (#657)JStringnow has::new(),::from_strand::from_jni_strconstructor methods (#960)JThreadas aReferencewrapper forjava.lang.Threadreferences (#612)JThrowable::get_messageis a binding forgetMessage()and gives easy access to an exception messageJThrowable::get_stack_traceis a binding forgetStackTrace(), returning aJObjectArray<JStackTraceElement>Macros
#[jni_mangle()]attribute proc macro can export anextern "system"native method with a mangled name like "Java_com_example_myMethod" so it can be automatically resolved within a shared library by the JVM (#693)jni_str!andjni_cstr!macros can encode a MUTF-8&'static JNIStror&' static CStrat compile time with full unicode support. (#696)jni_sig!,jni_sig_str!,jni_sig_cstr!andjni_sig_jstr!macros can parse and compile signatures like(arg0: jint, arg1: JString) -> JStringintoMethodSignatureandFieldSignaturedescriptors or JNI string literals like "(ILjava/lang/String;)Ljava/lang/String;" (#697)native_method!macro binds a single native method to a Rust function with type safety and optionally exports it too. (#698)bind_java_type!macro can generate full Rust bindings for Java types (classes and interfaces) with fields, constructors, methods and native methods (#712)Changed
JavaVM / Thread Attachment APIs
>= 1.4. It needs>= 1.2so it can check for exceptions and needs>= 1.4to avoid runtime checks for direct byte buffers (#478)AttachGuardAttachGuardusage is now consideredunsafesince the type must be pinned to the stack (but that can't be guaranteed by the Rust type system alone).AttachGuardis pinned to the stack), attachment APIs take aFnOncewhose&mut Envarg borrows from a hiddenAttachGuardJavaVM::attach_current_threadrequests a permanent thread attachment (reducing cost of futureattach_current_thread()calls)JavaVM::attach_current_thread_for_scoperequests a thread attachmentConfiguration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.