<Elide>, the open source runtime, has released `1....
# feed
s
Elide, the open source runtime, has released
1.0.0-beta6
. I've been excited to post this for a long time; although Elide is written in Kotlin, it has never been able to run Kotlin for all of us who enjoy it. That is now a thing of the past. Kotlin is now supported K πŸ₯³ πŸ†• Run Kotlin with no prior build step πŸ†• Use Kotlin Serialization seamlessly πŸ†• Use Kotlin Test out of the box πŸ†• Gradle and Maven plugins! βœ… Install from NPM and Maven βœ… Build code, run tests, install dependencies, get coverage, all without Gradle and with no library setup βœ… Build/run Kotlin, JavaScript, TypeScript, Python in one runtime βœ… Call between languages with near-0 overhead βœ… Support for most of the Node API; targeting WinterTC βœ… Drop-in replacement for
javac
,
kotlinc
,
jar
βœ…
elide:llm
-- local LLM inference with any GGUF model from HuggingFace βœ…
elide:sqlite
-- use sqlite from your app easily Elide's Gradle and Maven plugins are also now available: https://github.com/elide-dev/gradle https://github.com/elide-dev/maven The plugins simply swap out
javac
for Elide, and optionally delegate dependency fetching. As a result, compilation is accelerated by up to 20x, and dependency fetching by up to 100x. This is a drop-in replacement with nothing to pay or license. Try Elide on macOS arm64 or Linux amd64:
Copy code
curl -sSL --tlsv1.2 elide.sh | bash -s -
⭐ our repo if you like our work, and wish to see more Kotlin support πŸ˜„ See the thread here for gif samples or questions πŸ‘‡ 🧡
kodee happy 4
K 10
πŸ‘‡ benchmarking
javac
πŸ‘‡ benchmarking
kotlinc
πŸ‘‡ Gradle plugin, now available at
id("dev.elide")
https://github.com/elide-dev/gradle
n
I installed 1.0.0-beta6 and
elide --version
prints that, but
elide init
fails with
Copy code
elide Uncaught fatal exception: com.oracle.svm.core.jdk.UnsupportedFeatureError: Resource bundle lookup must be loaded during native image generation: class sun.util.logging.resources.logging
This is on Linux-6.12.32-amd64 and using
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
. Similar issue when trying to run
elide run a.kt
with
a.kt
being
Copy code
fun main() {
  println("Hello, Elide!")
}
shows
Copy code
elide Uncaught fatal exception: kotlin.NotImplementedError: An operation is not implemented: Not yet implemented: KotlinJarBundleInfo
πŸ‘ 1
s
try
elide run a.kts
and just use the
println
?
thank you for reporting this, let me take a look
also, does
elide init
immediately fail? or after some questions? that's interesting
(easy to fix, but i'm surprised it hasn't surfaced before...)
(also, filed here to track)
n
elide run a.kts
works. Also works when using
Copy code
fun main() {
  println("Hello, Elide!")
}
main()
And yes,
elide init
immediately fails. Of course, error message is much more than the single line.
πŸ‘ 1
s
i can post a test version with a fix for the first issue; the second issue is probably a mismatch in behavior with
.kt
, which is also fixable πŸ™‚
thank you, this is excellent feedback, ill post a test binary, once fixed, on that issue, and then it will make it into the next release
πŸ‘ 1
also, what is your github, so i can credit you in the release notes? πŸ˜„
n
s
followed as well!
f
I have some questions: 1 . Are arbitrary compiler plugins supported e.g. Compose 2. Is kotlin execution interpreted, skipping the compilation step, or does it compile it to jvm bytecode first and run it on GraalVM normally? If the latter, I don't understand the function of the runtime over just using GraalVM
πŸ‘ 1
s
1. Arbitrary plugins are not supported yet; only Serialization and PowerAssert (but the latter is not exposed to the user just yet) a. We have plans to support all official Kotlin compiler plugins as builtins + KotlinX, perhaps some popular community ones b. We have a longer term plan where we can support arbitrary plugins 2. Regarding Kotlin execution: Both routes are supported, in short a. kts runs through scripting i. this runs on Espresso b. kt is built to bytecode and then executed as a JAR i. when run through Elide, this is run on Espresso ii. but you can also just build a JAR and execute it on any JVM > I don't understand the function of [Elide over GraalVM] Elide is built with GraalVM, and so it's essentially just preconfiguring everything here, making
javac
and
kotlinc
cooperate in a Native Image context, and so on, and adding the end-to-end pieces that make it a full toolchain, e.g.: β€’ Maven and NPM fetchers β€’ Test discovery and execution β€’ Coverage, linting... etc Additionally, we use GraalJs for the JS side, and add support for TypeScript and the Node API, neither of which are supported in stock GVM. Of course there is GraalNode, but that delegates to Node's event loop; Elide is sort of "upside-down GraalNode," in that it is still JVM "leading the way" for the event loop, with Node API implemented on top of JDK.
and, thank you for those questions πŸ™‚ they are good ones. basically, Elide is to GraalVM as Node is to V8
f
Espresso runs bytecode
The important part is not compiling to bytecode
πŸ‘ 1
Thanks for the response
s
ah, sorry, yes, this is just compile-and-then-run; it is not a new Kotlin interpreter