Elide: Alpha 8
Summary
Version:
1.0.0-alpha8
This is the first major release after Elide's public alpha launch. It is a huge release full of tons of feature work, fixes, and general toil toward stability.
See the Known Issues and Fixed Issues sections below for more information.
Language Support
- JavaScript (ECMA2023)
- Python (
3.11.x
) - Ruby (
3.2~
)
New features
- Node API:
os
- Node API:
assert
- Node API:
process
- Node API:
path
- Multi-file embedded bundles
- Maven Central release
Fixed issues
- HTTP intrinsic broken on macOS
- Builtin JS modules not loading
- Known issues with JS imports on main
- Known issues with Ruby
- Logging doesn't properly print stacktraces
- Can't infer engine by filename/extension
- Routine errors are ugly
- Alpha8 self-test failure
- Native transport linkage issues
- AWT linkage errors
- Crashes on main in release mode
- Horrible crash when running
elide bug
ExceptionInInitializerError
with Netty server
Installation
curl -sSL --tlsv1.2 elide.sh | bash -s -
Major features
-
Polyglot support. Elide supports JavaScript, Python, Ruby, WASM, and LLVM, thanks to GraalVM's language implementations.
-
It's crazy fast. We have a built-in server intrinsic now, powered by Netty. It is accessible from each language. You can run, say, an Express JS-style server, with Netty underneath, using this intrinsic. Elide can run such servers at over 500k+ RPS, depending on native transport support, etc. This is about 75x faster than Node 20, and 5x+ faster than Deno/Bun.
-
Isolated env. Elide applications, by default, do not have access to host environment variables. This also lands just in time to include Dotenv support, listed below, and matches Elide's closed-world I/O and system guarantees.
-
Isolated I/O. Elide applications do not have access to Host I/O by default. Applications can load "bundles" (tarballs) which become the visible filesystem for an application, or elect to allow Host I/O. Bundles will allow apps to seal their I/O reads and writes. VFS via these bundles can be combined with Host I/O using VFS layering.
-
Universal Dotenv support. If you have a
.env
file in your project directory, Elide will load it and apply the contents to guest VMs in all languages. JavaScript, Python, and Ruby are all supported.
Fixed Issues
-
Ruby is working great in native mode now. #789
-
Python is working great with VFS, and so is Ruby.
Known Issues
Coming shortly.
Dependency Updates
- Java → JDK 22
- Kotlin →
2.0.0-RC2
- Micronaut →
4.3.8
- React →
18.3.1
- PNPM →
9.0.6
- Node →
21.x
Note
This release is registered on Sigstore, and signed with GPG2. Hash-lock files are provided for each archive. **Provenance material is also made available, but due to a bug in CI, may not yet verify. This will be rectified by later releases and corrected before 1.0.0
is released.
What's Changed
- Hotfixes: AWT,
selfupdate
command by @sgammon in #454 - feat: decouple env plugin from language runtimes by @darvld in #452
- feat(dev): add codespace template for trying elide by @sgammon in #466
- feat(dev): codespaces re-org and update by @sgammon in #468
- chore: add homebrew install to readme by @sgammon in #473
- feat(dev): add
bash
andelide
containers by @sgammon in #467 - fix: issues with netty in native image by @darvld in #475
- fix(cli): avoid crashing when no user config directory is present. by @darvld in #476
- feat: host I/O access using a Hybrid VFS by @darvld in #495
- feat: support for JVM-based guest languages. by @darvld in #501
- chore: add buildless github action to ci by @sgammon in #506
- fix(graalvm): include core module replacements by default in js plugin. by @darvld in #477
- chore(deps): bump actions/checkout from 4.1.0 to 4.1.1 by @dependabot in #515
- chore(deps): bump graalvm/setup-graalvm from 1.1.4 to 1.1.5 by @dependabot in #512
- chore(deps): bump step-security/harden-runner from 2.5.1 to 2.6.1 by @dependabot in #511
- chore(deps): bump bufbuild/buf-setup-action from 1.26.1 to 1.28.1 by @dependabot in #513
- chore(deps): bump io.micronaut.application from 4.1.1 to 4.2.0 by @dependabot in #525
- chore(deps): bump actions/setup-node from 3.8.1 to 4.0.0 by @dependabot in #537
- chore(deps): bump actions/labeler from 4.3.0 to 5.0.0 by @dependabot in #534
- chore(deps): bump google-github-actions/auth from 1.1.1 to 2.0.0 by @dependabot in #536
- chore(deps): bump ossf/scorecard-action from 2.2.0 to 2.3.1 by @dependabot in #535
- chore(deps): bump postcss from 8.4.30 to 8.4.32 by @dependabot in #510
- chore(deps): bump JetBrains/qodana-action from 2023.2.6 to 2023.2.9 by @dependabot in #516
- chore(deps): bump org.gradle.wrapper-upgrade from 0.11.1 to 0.11.4 by @dependabot in #524
- chore(deps): bump io.micronaut.aot from 4.1.1 to 4.2.1 by @dependabot in #533
- chore: buildless updates by @sgammon in #507
- chore(deps-dev): bump @types/google-protobuf from 3.15.6 to 3.15.12 by @dependabot in #514
- chore(deps): bump typescript from 4.9.5 to 5.3.2 by @dependabot in #529
- chore(deps-dev): bump @mdx-js/loader from 2.2.1 to 3.0.0 by @dependabot in #517
- Update: JVM 21, Kotlin
1.9.21
by @sgammon in #546 - chore(deps): bump github/codeql-action from 2.21.9 to 2.22.9 by @dependabot in #547
- chore(deps): bump actions/setup-java from 3.13.0 to 4.0.0 by @dependabot in #548
- chore(deps): bump JetBrains/qodana-action from 2023.2.9 to 2023.3.0 by @dependabot in #549
- chore(deps): bump actions/deploy-pages from 2.0.4 to 3.0.1 by @dependabot in #550
- chore(deps): bump bufbuild/buf-lint-action from 1.0.3 to 1.1.0 by @dependabot in #551
- chore(deps-dev): bump prettier from 3.0.3 to 3.1.1 by @dependabot in #552
- chore(deps): bump gradle/gradle-build-action from 2.9.0 to 2.11.1 by @dependabot in #567
- chore(deps): bump bufbuild/buf-push-action from 1.1.1 to 1.2.0 by @dependabot in #558
- chore(deps): bump actions/dependency-review-action from 3.1.0 to 3.1.4 by @dependabot in #560
- chore(deps): bump google-github-actions/setup-gcloud from 1.1.1 to 2.0.1 by @dependabot in #565
- chore(deps): bump github/codeql-action from 2.22.9 to 3.22.12 by @dependabot in #566
- Tracking: Kotlin
2.0.0
by @sgammon in #587 - Feature: WASI Support by @sgammon in #588
- Feature: Control Protocol by @sgammon in #589
- [StepSecurity] Apply security best practices by @step-security-bot in #619
- chore: cleanup and refactor ci into reusable jobs by @sgammon in #614
- chore(deps): bump actions/dependency-review-action from 4.0.0 to 4.1.0 by @dependabot in #623
- chore(deps): bump bufbuild/buf-setup-action from 1.28.1 to 1.29.0 by @dependabot in #625
- feat: overhaul codebase checks by @sgammon in #635
- [StepSecurity] ci: Harden GitHub Actions by @step-security-bot in #644
- chore: formatting by @sgammon in #643
- Fix: Native Compile by @sgammon in #649
- Alpha v8: GraalVM 22 / Kotlin 2.0 RC1 by @sgammon in #788
- fix: use custom npm module path for js tests. by @darvld in #796
- Release: Elide Alpha 8 by @elidebot in #792
- chore: upgrade micronaut/kotlin by @sgammon in #839
Full Changelog: 1.0.0-alpha7...1.0.0-alpha8