Depends on #38 and on disarm refactor being available (#42).
Expose disarm to the JVM with an idiomatic Java API (e.g. disarm.normalizeConfusables(...), disarm.stripObfuscation(...)).
Approach
JNI via the jni crate (or Project Panama/FFI over a stable C ABI). Bundle prebuilt natives for {linux, macOS, windows} × {x86_64, aarch64}. (UniFFI→Kotlin is an alternative if Kotlin-first is acceptable.)
Acceptance (validation)
The artifact (disarm + JNI binding + bundled natives) is published to Maven Central and works via a normal Gradle/Maven dependency on a clean machine with no Rust toolchain.
Depends on #38 and on disarm refactor being available (#42).
Expose disarm to the JVM with an idiomatic Java API (e.g.
disarm.normalizeConfusables(...),disarm.stripObfuscation(...)).Approach
JNI via the
jnicrate (or Project Panama/FFI over a stable C ABI). Bundle prebuilt natives for {linux, macOS, windows} × {x86_64, aarch64}. (UniFFI→Kotlin is an alternative if Kotlin-first is acceptable.)Acceptance (validation)
The artifact (disarm + JNI binding + bundled natives) is published to Maven Central and works via a normal Gradle/Maven dependency on a clean machine with no Rust toolchain.