Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
46afcfb
feat(intellij): initial plugin structure
darvld Jun 25, 2025
605edff
feat: move manifest pkl sources to tooling module
darvld Jun 30, 2025
c4d0948
fix: set jvm bytecode target to 21 for core and base modules
darvld Jun 30, 2025
876b728
feat: resolve and parse elide project manifest
darvld Jun 30, 2025
f281a7c
feat: map elide source sets to idea modules
darvld Jul 2, 2025
52c39da
chore: exclude intellij platform temp files from git
darvld Jul 2, 2025
ba069f1
feat(idea): resolve library dependency information
darvld Jul 2, 2025
5beaa92
chore(idea): refactor project sync components
darvld Jul 3, 2025
57f09eb
feat(idea): project and plugin settings
darvld Jul 4, 2025
66a47b7
feat(idea): use most recent jdk for project
darvld Jul 4, 2025
97c4a1e
feat(idea): call elide install during project sync
darvld Jul 5, 2025
39eac8d
feat(idea): elide run configurations
darvld Jul 10, 2025
10ae6d1
fix(idea): mark elide .dev directory as excluded
darvld Jul 10, 2025
aded7c3
fix(idea): reload project on settings changes
darvld Jul 10, 2025
874a568
feat(idea): allow running jvm entrypoint from gutter icon
darvld Jul 11, 2025
7477eea
feat(idea): persist elide project index data
darvld Jul 14, 2025
824200d
chore(idea): refactor plugin packages
darvld Jul 14, 2025
919848d
fix(tooling): broken references after rebase
darvld Jul 17, 2025
a0f61fe
feat(idea): show notification for invalid elide home
darvld Jul 17, 2025
191b968
chore(idea): add plugin description and proper icons
darvld Jul 18, 2025
0a39095
fix(idea): setup plugin signing and publishing config
darvld Jul 18, 2025
43d5c2b
chore(idea): update api pins and run linter
darvld Jul 18, 2025
f70bbce
fix(idea): broken project sync icon
darvld Jul 18, 2025
bbf30c6
fix(idea): add serve command to list of default tasks
darvld Jul 19, 2025
7773908
fix(idea): incorrect command line for jvm main entrypoint
darvld Jul 19, 2025
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,5 @@ project/docs/apidocs
packages/cli/README.md.br
README.md.br
node_modules
.intellijPlatform/
cosign.key
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ buildEmbedded = false
buildDocs = false
buildBenchmarks = false
buildExperimentalEntrypoint = false
buildIdePlugins = false

enableSigning = false
enableSigstore = false
Expand Down
4 changes: 4 additions & 0 deletions gradle/elide.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ hibernate = "5.6.11.Final"
highlights = "1.0.0"
hikari = "4.0.3"
hoplite = "2.9.0"
intellij-platform = "2.5.0"
intellij-target-ide = "2025.1"
intellij-sinceBuild = "251"
inquirer = "0.1.0"
j4rs = "0.22.0"
jackson = "2.19.1"
Expand Down Expand Up @@ -295,6 +298,7 @@ gr8 = { id = "com.gradleup.gr8", version.ref = "gr8" }
graalvm = { id = "org.graalvm.buildtools.native" }
gradle-checksum = { id = "org.gradle.crypto.checksum", version.ref = "gradleChecksum" }
gradle-testretry = { id = "org.gradle.test-retry", version.ref = "gradleTestRetry" }
intellij-platform = { id = "org.jetbrains.intellij.platform", version.ref = "intellij-platform" }
jetbrains-compose = { id = "org.jetbrains.compose" }
jmh = { id = "me.champeau.jmh", version.ref = "jmh-plugin" }
jprofiler = { id = "com.jprofiler", version.ref = "jprofiler" }
Expand Down
5 changes: 5 additions & 0 deletions packages/base/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
* License for the specific language governing permissions and limitations under the License.
*/

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import elide.internal.conventions.kotlin.*

plugins {
Expand All @@ -34,6 +35,10 @@ elide {
explicitApi = true
}

jvm {
target = JvmTarget.JVM_21
}

checks {
detekt = true
}
Expand Down
47 changes: 0 additions & 47 deletions packages/builder/api/builder.api
Original file line number Diff line number Diff line change
Expand Up @@ -1705,43 +1705,6 @@ public final class elide/tooling/jvm/JavadocToolKt {
public static final fun getJavadoc ()Lelide/tooling/Tool$CommandLineTool;
}

public final class elide/tooling/jvm/JvmLibraries {
public static final field APIGUARDIAN_API Ljava/lang/String;
public static final field EMBEDDED_APIGUARDIAN_VERSION Ljava/lang/String;
public static final field EMBEDDED_COROUTINES_VERSION Ljava/lang/String;
public static final field EMBEDDED_JUNIT_PLATFORM_VERSION Ljava/lang/String;
public static final field EMBEDDED_JUNIT_VERSION Ljava/lang/String;
public static final field EMBEDDED_KOTLINX_CSS_VERSION Ljava/lang/String;
public static final field EMBEDDED_KOTLINX_HTML_VERSION Ljava/lang/String;
public static final field EMBEDDED_KOTLINX_IO_VERSION Ljava/lang/String;
public static final field EMBEDDED_OPENTEST_VERSION Ljava/lang/String;
public static final field EMBEDDED_SERIALIZATION_VERSION Ljava/lang/String;
public static final field INSTANCE Lelide/tooling/jvm/JvmLibraries;
public static final field JUNIT_JUPITER_API Ljava/lang/String;
public static final field JUNIT_JUPITER_ENGINE Ljava/lang/String;
public static final field JUNIT_JUPITER_PARAMS Ljava/lang/String;
public static final field JUNIT_PLATFORM_COMMONS Ljava/lang/String;
public static final field JUNIT_PLATFORM_CONSOLE Ljava/lang/String;
public static final field JUNIT_PLATFORM_ENGINE Ljava/lang/String;
public static final field KOTLINX_COROUTINES Ljava/lang/String;
public static final field KOTLINX_COROUTINES_TEST Ljava/lang/String;
public static final field KOTLINX_CSS Ljava/lang/String;
public static final field KOTLINX_HTML Ljava/lang/String;
public static final field KOTLINX_IO Ljava/lang/String;
public static final field KOTLINX_IO_BYTESTRING Ljava/lang/String;
public static final field KOTLINX_SERIALIZATION Ljava/lang/String;
public static final field KOTLINX_SERIALIZATION_JSON Ljava/lang/String;
public static final field KOTLIN_TEST Ljava/lang/String;
public static final field KOTLIN_TEST_JUNIT5 Ljava/lang/String;
public static final field OPENTEST Ljava/lang/String;
public final fun builtinClasspath (Ljava/nio/file/Path;ZZZ)Lelide/tooling/Classpath;
public static synthetic fun builtinClasspath$default (Lelide/tooling/jvm/JvmLibraries;Ljava/nio/file/Path;ZZZILjava/lang/Object;)Lelide/tooling/Classpath;
public final fun jarNameFor (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public final fun jarNamed (Ljava/lang/String;)Ljava/lang/String;
public final fun resolveJarFor (Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/Path;
public final fun resolveJarFor (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;)Ljava/nio/file/Path;
}

public abstract interface class elide/tooling/jvm/gradle/AttributeValue {
public static final field Companion Lelide/tooling/jvm/gradle/AttributeValue$Companion;
}
Expand Down Expand Up @@ -2410,16 +2373,6 @@ public final class elide/tooling/jvm/resolver/MavenClassifier : java/lang/Enum,
public static fun values ()[Lelide/tooling/jvm/resolver/MavenClassifier;
}

public final class elide/tooling/jvm/resolver/MavenLockfileResolver : elide/tooling/ClasspathsProvider {
public static final field Companion Lelide/tooling/jvm/resolver/MavenLockfileResolver$Companion;
public fun classpathProvider (Lelide/tooling/ClasspathSpec;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static final fun of (Lelide/tooling/lockfile/ElideLockfile$MavenLockfile;Ljava/nio/file/Path;)Lelide/tooling/jvm/resolver/MavenLockfileResolver;
}

public final class elide/tooling/jvm/resolver/MavenLockfileResolver$Companion {
public final fun of (Lelide/tooling/lockfile/ElideLockfile$MavenLockfile;Ljava/nio/file/Path;)Lelide/tooling/jvm/resolver/MavenLockfileResolver;
}

public final class elide/tooling/jvm/resolver/MavenResolverErrors : java/lang/RuntimeException {
public final fun getErrors ()Ljava/util/List;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,120 +66,6 @@ private fun srcSetTaskName(srcSet: SourceSet, name: String): String = buildStrin
append(srcSet.name.slice(1..srcSet.name.lastIndex))
}

/**
* # JVM Libraries
*
* Describes coordinates and versions for built-in libraries which ship with Elide.
*/
public object JvmLibraries {
public const val EMBEDDED_JUNIT_VERSION: String = "5.13.1"
public const val EMBEDDED_JUNIT_PLATFORM_VERSION: String = "1.13.1"
public const val EMBEDDED_APIGUARDIAN_VERSION: String = "1.1.2"
public const val EMBEDDED_OPENTEST_VERSION: String = "1.3.0"
public const val EMBEDDED_KOTLINX_HTML_VERSION: String = "0.12.0"
public const val EMBEDDED_KOTLINX_CSS_VERSION: String = "2025.7.1"
public const val EMBEDDED_KOTLINX_IO_VERSION: String = "0.8.0"
public const val EMBEDDED_COROUTINES_VERSION: String = KotlinLanguage.COROUTINES_VERSION
public const val EMBEDDED_SERIALIZATION_VERSION: String = KotlinLanguage.SERIALIZATION_VERSION
public const val APIGUARDIAN_API: String = "org.apiguardian:apiguardian-api"
public const val JUNIT_JUPITER_API: String = "org.junit.jupiter:junit-jupiter-api"
public const val JUNIT_JUPITER_ENGINE: String = "org.junit.jupiter:junit-jupiter-engine"
public const val JUNIT_PLATFORM_ENGINE: String = "org.junit.platform:junit-platform-engine"
public const val JUNIT_PLATFORM_COMMONS: String = "org.junit.platform:junit-platform-commons"
public const val JUNIT_PLATFORM_CONSOLE: String = "org.junit.platform:junit-platform-console"
public const val JUNIT_JUPITER_PARAMS: String = "org.junit.jupiter:junit-jupiter-params"
public const val OPENTEST: String = "org.opentest4j:opentest4j"
public const val KOTLIN_TEST: String = "org.jetbrains.kotlin:kotlin-test"
public const val KOTLIN_TEST_JUNIT5: String = "org.jetbrains.kotlin:kotlin-test-junit5"
public const val KOTLINX_HTML: String = "org.jetbrains.kotlinx:kotlinx-html-jvm"
public const val KOTLINX_CSS: String = "org.jetbrains.kotlinx:kotlinx-css-jvm"
public const val KOTLINX_IO: String = "org.jetbrains.kotlinx:kotlinx-io-jvm"
public const val KOTLINX_IO_BYTESTRING: String = "org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm"
public const val KOTLINX_COROUTINES: String = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm"
public const val KOTLINX_COROUTINES_TEST: String = "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm"
public const val KOTLINX_SERIALIZATION: String = "org.jetbrains.kotlinx:kotlinx-serialization-core-jvm"
public const val KOTLINX_SERIALIZATION_JSON: String = "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm"

internal val baseCoordinates = arrayOf(
jarNamed("kotlin-stdlib"),
jarNamed("kotlin-reflect"),
)

internal val baseKotlinxCoordinates = arrayOf(
KOTLINX_HTML to EMBEDDED_KOTLINX_HTML_VERSION,
KOTLINX_CSS to EMBEDDED_KOTLINX_CSS_VERSION,
KOTLINX_IO to EMBEDDED_KOTLINX_IO_VERSION,
KOTLINX_IO_BYTESTRING to EMBEDDED_KOTLINX_IO_VERSION,
)

internal val testCoordinates = arrayOf(
OPENTEST to EMBEDDED_OPENTEST_VERSION,
JUNIT_JUPITER_API to EMBEDDED_JUNIT_VERSION,
JUNIT_JUPITER_PARAMS to EMBEDDED_JUNIT_VERSION,
JUNIT_JUPITER_ENGINE to EMBEDDED_JUNIT_VERSION,
JUNIT_PLATFORM_ENGINE to EMBEDDED_JUNIT_PLATFORM_VERSION,
JUNIT_PLATFORM_COMMONS to EMBEDDED_JUNIT_PLATFORM_VERSION,
JUNIT_PLATFORM_CONSOLE to EMBEDDED_JUNIT_PLATFORM_VERSION,
KOTLIN_TEST to KotlinLanguage.VERSION,
KOTLIN_TEST_JUNIT5 to KotlinLanguage.VERSION,
KOTLINX_COROUTINES_TEST to EMBEDDED_COROUTINES_VERSION,
KOTLINX_SERIALIZATION to EMBEDDED_SERIALIZATION_VERSION,
KOTLINX_SERIALIZATION_JSON to EMBEDDED_SERIALIZATION_VERSION,
APIGUARDIAN_API to EMBEDDED_APIGUARDIAN_VERSION,
)

public fun jarNamed(name: String): String = buildString {
append(name)
append('.')
append("jar")
}

public fun jarNameFor(coordinate: String, version: String): String {
val parts = coordinate.split(":")
require(parts.size == 2) { "Invalid built-in coordinate: $coordinate" }
return "${parts[1]}-$version.jar"
}

public fun resolveJarFor(path: Path, coordinate: String, version: String): Path {
return resolveJarFor(path, jarNameFor(coordinate, version))
}

public fun resolveJarFor(path: Path, name: String): Path {
return path
.resolve("kotlin")
.resolve(KotlinLanguage.VERSION)
.resolve("lib")
.resolve(name)
}

public fun builtinClasspath(
path: Path,
tests: Boolean = false,
kotlin: Boolean = true,
kotlinx: Boolean = true,
): Classpath {
return Classpath.from(
buildList {
if (kotlin || tests) addAll(
baseCoordinates.map {
resolveJarFor(path, it)
},
)
if (kotlinx) baseKotlinxCoordinates.forEach { (coordinate, version) ->
add(resolveJarFor(path, coordinate, version))
}
if (tests) {
addAll(
testCoordinates.map { (coordinate, version) ->
resolveJarFor(path, coordinate, version)
},
)
}
},
)
}
}

/**
* ## JVM Build Configurator
*/
Expand Down
5 changes: 0 additions & 5 deletions packages/cli/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2196,7 +2196,6 @@ fun Jar.applyJarSettings() {
}

val intermediateKotlinResources = kotlinHomeRoot.map { it.dir(libs.versions.kotlin.sdk.get()) }
val pklSources = layout.projectDirectory.dir("src/main/pkl")

// note: the traditional KOTLIN_HOME path does not end with `lib`, so it should point to the versioned kotlin root here,
// even though elide's own paths include `lib`.
Expand Down Expand Up @@ -2292,10 +2291,6 @@ tasks {
// include("umbrella.dll")
// into("META-INF/native/")
// }

from(pklSources) {
into("META-INF/elide/pkl/")
}
}

jar {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package sample
import com.google.common.base.Joiner

fun render_greeting(): String {
return Joiner.on(", ").join("Hello", "World")
return Joiner.on(" ").join("Hello", "World")
}

fun main() {
Expand Down
5 changes: 5 additions & 0 deletions packages/core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
* License for the specific language governing permissions and limitations under the License.
*/

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import elide.internal.conventions.kotlin.*

plugins {
Expand All @@ -32,6 +33,10 @@ elide {
target = KotlinTarget.Default
explicitApi = true
}

jvm {
target = JvmTarget.JVM_21
}
}

dependencies {
Expand Down
Loading
Loading