Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Nucleus Native Access

[![Gradle Plugin Portal](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fplugins.gradle.org%2Fm2%2Fio%2Fgithub%2Fkdroidfilter%2Fnucleusnativeaccess%2Fio.github.kdroidfilter.nucleusnativeaccess.gradle.plugin%2Fmaven-metadata.xml&label=Gradle%20Plugin%20Portal)](https://plugins.gradle.org/plugin/io.github.kdroidfilter.nucleusnativeaccess)
[![Gradle Plugin Portal](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fplugins.gradle.org%2Fm2%2Fdev%2Fnucleusframework%2Fnna%2Fdev.nucleusframework.nna.gradle.plugin%2Fmaven-metadata.xml&label=Gradle%20Plugin%20Portal)](https://plugins.gradle.org/plugin/dev.nucleusframework.nna)

A Gradle plugin that lets you use **Kotlin/Native code directly from the JVM** as if it were a regular JVM library. Classes, methods, properties, enums, nullable types, companion objects, exception propagation, callbacks — everything is transparent to the JVM developer.

Expand Down Expand Up @@ -46,7 +46,7 @@ pluginManagement {
// build.gradle.kts
plugins {
kotlin("multiplatform") version "2.3.20"
id("io.github.kdroidfilter.nucleusnativeaccess") version "0.1.0"
id("dev.nucleusframework.nna") version "0.1.0"
}
```

Expand Down Expand Up @@ -477,7 +477,7 @@ The Compose compiler plugin and Nucleus Native Access both add Kotlin/Native tar

```
my-app/
├── native/ ← Kotlin/Native + nucleusnativeaccess (no Compose)
├── native/ ← Kotlin/Native + nna (no Compose)
│ └── build.gradle.kts
├── app/ ← Compose Desktop + depends on :native
│ └── build.gradle.kts
Expand All @@ -489,7 +489,7 @@ my-app/
```kotlin
plugins {
kotlin("multiplatform") version "2.3.20"
id("io.github.kdroidfilter.nucleusnativeaccess")
id("dev.nucleusframework.nna")
}

kotlin {
Expand Down Expand Up @@ -605,7 +605,7 @@ The plugin is inspired by two projects:
- **[swift-java](https://github.com/swiftlang/swift-java)** (Apple) — how Swift code is made callable from Java via FFM `MethodHandle` downcalls. We adapted the FFM binding generation: each method gets a `FunctionDescriptor` + `MethodHandle`, classes use `Cleaner` for GC safety.

```
plugin-build/plugin/src/main/kotlin/io/github/kdroidfilter/nucleusnativeaccess/plugin/
plugin-build/plugin/src/main/kotlin/dev/nucleusframework/nna/plugin/
├── ir/ # Intermediate representation (inspired by SirModule)
│ └── KneIR.kt # KneModule, KneClass, KneFunction, KneType...
├── analysis/
Expand Down
2 changes: 1 addition & 1 deletion examples/benchmark/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
kotlin("multiplatform")
id("io.github.kdroidfilter.nucleusnativeaccess")
id("dev.nucleusframework.nna")
}

kotlin {
Expand Down
2 changes: 1 addition & 1 deletion examples/calculator/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
id("org.jetbrains.compose") version "1.10.2"
id("org.jetbrains.kotlin.plugin.compose") version "2.3.20"
id("io.github.kdroidfilter.nucleus") version "1.7.2"
id("io.github.kdroidfilter.nucleusnativeaccess")
id("dev.nucleusframework.nna")
}

kotlin {
Expand Down
2 changes: 1 addition & 1 deletion examples/systeminfo/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
id("org.jetbrains.compose") version "1.10.2"
id("org.jetbrains.kotlin.plugin.compose") version "2.3.20"
id("io.github.kdroidfilter.nucleus") version "1.7.2"
id("io.github.kdroidfilter.nucleusnativeaccess")
id("dev.nucleusframework.nna")
}

val hostOs: String = System.getProperty("os.name")
Expand Down
10 changes: 5 additions & 5 deletions plugin-build/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
ID=io.github.kdroidfilter.nucleusnativeaccess
GROUP=io.github.kdroidfilter
ID=dev.nucleusframework.nna
GROUP=dev.nucleusframework
DISPLAY_NAME=Kotlin Native JVM Export Plugin
DESCRIPTION=Gradle plugin to use Kotlin Native code transparently from JVM via FFM
WEBSITE=https://github.com/kdroidFilter/NucleusNativeAccess
VCS_URL=https://github.com/kdroidFilter/NucleusNativeAccess
IMPLEMENTATION_CLASS=io.github.kdroidfilter.nucleusnativeaccess.plugin.KotlinNativeExportPlugin
WEBSITE=https://github.com/NucleusFramework/NucleusNativeAccess
VCS_URL=https://github.com/NucleusFramework/NucleusNativeAccess
IMPLEMENTATION_CLASS=dev.nucleusframework.nna.plugin.KotlinNativeExportPlugin
org.gradle.parallel=true
org.gradle.configuration-cache=true
2 changes: 1 addition & 1 deletion plugin-build/plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ gradlePlugin {
publishing {
publications.withType<MavenPublication>().configureEach {
if (name == "pluginMaven") {
artifactId = "nucleusnativeaccess"
artifactId = "nna"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin
package dev.nucleusframework.nna.plugin

import org.gradle.api.provider.Property

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin
package dev.nucleusframework.nna.plugin

import io.github.kdroidfilter.nucleusnativeaccess.plugin.catalog.kotlinxCoroutineDependency
import io.github.kdroidfilter.nucleusnativeaccess.plugin.catalog.kotlinxCoroutineJvmDependency
import io.github.kdroidfilter.nucleusnativeaccess.plugin.catalog.kotlinxCoroutineTestDependency
import io.github.kdroidfilter.nucleusnativeaccess.plugin.tasks.GenerateNativeBridgesTask
import dev.nucleusframework.nna.plugin.catalog.kotlinxCoroutineDependency
import dev.nucleusframework.nna.plugin.catalog.kotlinxCoroutineJvmDependency
import dev.nucleusframework.nna.plugin.catalog.kotlinxCoroutineTestDependency
import dev.nucleusframework.nna.plugin.tasks.GenerateNativeBridgesTask
import org.gradle.api.GradleException
import org.gradle.api.Plugin
import org.gradle.api.Project
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.analysis
package dev.nucleusframework.nna.plugin.analysis

import io.github.kdroidfilter.nucleusnativeaccess.plugin.codegen.FfmProxyGenerator
import io.github.kdroidfilter.nucleusnativeaccess.plugin.codegen.NativeBridgeGenerator
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneModule
import dev.nucleusframework.nna.plugin.codegen.FfmProxyGenerator
import dev.nucleusframework.nna.plugin.codegen.NativeBridgeGenerator
import dev.nucleusframework.nna.plugin.ir.KneModule
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.analysis

import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneClass
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneConstructor
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneDataClass
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneEnum
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneFunction
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneInterface
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneModule
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneParam
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneProperty
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneType
package dev.nucleusframework.nna.plugin.analysis

import dev.nucleusframework.nna.plugin.ir.KneClass
import dev.nucleusframework.nna.plugin.ir.KneConstructor
import dev.nucleusframework.nna.plugin.ir.KneDataClass
import dev.nucleusframework.nna.plugin.ir.KneEnum
import dev.nucleusframework.nna.plugin.ir.KneFunction
import dev.nucleusframework.nna.plugin.ir.KneInterface
import dev.nucleusframework.nna.plugin.ir.KneModule
import dev.nucleusframework.nna.plugin.ir.KneParam
import dev.nucleusframework.nna.plugin.ir.KneProperty
import dev.nucleusframework.nna.plugin.ir.KneType
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreApplicationEnvironment
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreApplicationEnvironmentMode
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.catalog
package dev.nucleusframework.nna.plugin.catalog

import org.gradle.api.Project

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.catalog
package dev.nucleusframework.nna.plugin.catalog

import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalog
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.codegen
package dev.nucleusframework.nna.plugin.codegen

import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneClass
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneDataClass
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneEnum
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneFunction
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneModule
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneParam
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneProperty
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneType
import dev.nucleusframework.nna.plugin.ir.KneClass
import dev.nucleusframework.nna.plugin.ir.KneDataClass
import dev.nucleusframework.nna.plugin.ir.KneEnum
import dev.nucleusframework.nna.plugin.ir.KneFunction
import dev.nucleusframework.nna.plugin.ir.KneModule
import dev.nucleusframework.nna.plugin.ir.KneParam
import dev.nucleusframework.nna.plugin.ir.KneProperty
import dev.nucleusframework.nna.plugin.ir.KneType

/**
* Generates Kotlin/JVM FFM proxy code.
Expand Down Expand Up @@ -1489,7 +1489,7 @@ class FfmProxyGenerator {

// ── Interface Proxy ────────────────────────────────────────────────────

private fun generateInterfaceProxy(iface: io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneInterface, module: KneModule, pkg: String): String = buildString {
private fun generateInterfaceProxy(iface: dev.nucleusframework.nna.plugin.ir.KneInterface, module: KneModule, pkg: String): String = buildString {
appendLine("// Auto-generated by kotlin-native-export plugin. Do not modify.")
appendLine("package $pkg")
appendLine()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.codegen

import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneClass
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneEnum
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneFunction
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneModule
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneParam
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneProperty
import io.github.kdroidfilter.nucleusnativeaccess.plugin.ir.KneType
package dev.nucleusframework.nna.plugin.codegen

import dev.nucleusframework.nna.plugin.ir.KneClass
import dev.nucleusframework.nna.plugin.ir.KneEnum
import dev.nucleusframework.nna.plugin.ir.KneFunction
import dev.nucleusframework.nna.plugin.ir.KneModule
import dev.nucleusframework.nna.plugin.ir.KneParam
import dev.nucleusframework.nna.plugin.ir.KneProperty
import dev.nucleusframework.nna.plugin.ir.KneType

/**
* Generates Kotlin/Native bridge code using @CName + StableRef.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.ir
package dev.nucleusframework.nna.plugin.ir

import java.io.Serializable

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.kdroidfilter.nucleusnativeaccess.plugin.tasks
package dev.nucleusframework.nna.plugin.tasks

import io.github.kdroidfilter.nucleusnativeaccess.plugin.analysis.PsiParseWorkAction
import dev.nucleusframework.nna.plugin.analysis.PsiParseWorkAction
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
Expand Down
6 changes: 3 additions & 3 deletions plugin-build/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ develocity {
}
}

rootProject.name = "nucleusnativeaccess-plugin"
rootProject.name = "nna-plugin"

include(":nucleusnativeaccess")
project(":nucleusnativeaccess").projectDir = file("plugin")
include(":nna")
project(":nna").projectDir = file("plugin")
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ develocity {
}
}

rootProject.name = "io.github.kdroidfilter.nucleusnativeaccess"
rootProject.name = "dev.nucleusframework.nna"

include(":examples:calculator")
include(":examples:systeminfo")
Expand Down
Loading