Changelog
User-visible changes in each Elide release. Releases are ordered newest first, with routine dependency and CI-only work omitted.
Inside Elide 1.6.0
Python becomes an optional download that elide setup python adds. Projects gain workspaces, a shared build cache, and export to Maven and IntelliJ. WebAssembly runs as an experimental language.
On one 24-core Linux workstation, elide run hello.js starts in 2.1 ms (Node.js 11.4 ms, Deno 6.1 ms), and a Python hello world in 4.8 ms (CPython 6.0 ms). With default settings, a fetch-handler server answered 600,000 to 710,000 requests per second: two to four times Bun and Deno, and six to seven times Node.js. Elide serves on several threads by default; Bun, Deno, and Node.js serve on one.


wrk -t12 -c256 -d10s after a 5-second warmup. Results vary between runs; this recording shows one.Elide 1.6.0
Python as an optional component, workspaces, a shared build cache, experimental WebAssembly, Kotlin 2.5, and faster startup and HTTP serving.
- Install Python only when you need it:
elide setup python,--with-python, orELIDE_WITH_PYTHON=1for npm. - Build several projects as one workspace with
workspace { members { ... } }in the rootelide.pkl. - Share a build cache between machines with
ELIDE_REMOTE_CACHE=<url>. ELIDE_REMOTE_CACHE_POLICY=smarttransfers a cache entry only when that is faster than rebuilding it.- Limit build concurrency with
elide build --workers=N. - Unknown, missing, or misspelled build options fail before any task runs and name the closest match.
ELIDE_BUILD_TELEMETRYwrites a local Chrome trace of the build.- Select JVM tests with
--select=class:...,method:..., orpackage:..., and by tag with--include-tag. jvm.flagsapply to JVM tests, andjvm.defsapply to runs, tests, start scripts, and container images.project("core").friend()lets a workspace member see a sibling's Kotlininternaldeclarations.kotlin.featuresandkotlin.pluginsconfigure Kotlin compiler plugins inelide build.elide kotlinc --abi-only(experimental) emits only a Kotlin ABI jar.- Replace a Maven artifact with a local jar using
dependencies.maven.substitutions. - Jar packaging applies
excludes, keeps requested classifiers, and mergesMETA-INF/services. elide runandelide testexit with the program's own exit code.--allow-env[=NAMES]lets a manifest read environment variables outside the default allowlist.- Serve from several application contexts with
--contexts=Nor--contexts=auto. elide project exportprints the manifest as JSON, a Maven POM, or an IntelliJ project.- Run WASI commands with
elide run app.wasm(experimental). - Load WASM libraries from JavaScript and TypeScript with the
WebAssemblyAPI orimport. - Compile JVM applications to WebAssembly with
elide native-image. - Package a runnable JVM application, with start scripts and archives, as a
Jvm.JvmApplicationartifact. - Run Java annotation processors declared under
processors. - Limit the heap with
--max-mem=512m; one-shot runs default to a 4 GB limit. - Collect JaCoCo coverage from runs with
elide run --coverage.
- Serving and
fetchuse the native transport by default on Linux and macOS;--transport=nioselects the portable one. - HTTP serving and
fetchhandle more requests per second. - JavaScript, TypeScript, and Python programs start faster.
- A program starts only the languages it uses;
--interoplets JavaScript, TypeScript, and Python call each other. - Source sets follow convention (
src/<set>/<language>,src/<set>, then flatsrcortest). elide teststops discovery at a nested project; name its path to run it.- A
--releasebuild no longer counts as up to date after a debug build. - Plain
http://Maven repositories are refused except on loopback;--allow-http-repositoriesallows them. --timeoutkills the run's whole process tree before exiting124.NODE_TLS_REJECT_UNAUTHORIZED=0prints Node's warning once.- jvmstat data is off by default;
--vmstatmakes the process visible tojps,jstat, andjcmd. - Development, MCP, and CDP servers accept only local
HostandOriginvalues;elide mcpreadsELIDE_MCP_TOKEN. - A pinned version that is not installed prompts before downloading;
ELIDE_AUTO_INSTALL=1answers yes. elide project exportreplaceselide manifest.- Java compiles with
--release, targetingjvm.targetor Java 21. - Release channels are
releaseandnightly;previewis gone. - Patch releases only add manifest schema properties; a removed property names the schema to move to.
- JVM coverage reports go under
.dev/reports/coverage/jvm/. - A top-level
coverageblock inelide.pklreplacestesting.coverage.
- Containers with a private cgroup namespace (the Docker and Podman default) get their memory and CPU limits.
- Fix a startup crash on linux-arm64, and Windows startup and directory-watcher regressions.
- Python:
bz2,lzma, andmultiprocessingspawn pools work. - Python: thread switching,
gc.collect(), warnings, andProcessPoolExecutorshutdown match CPython. fetchretries an idempotent request on a closed keep-alive connection;httpsappliesca.- Node:
MessagePort,BroadcastChannel,dgram,net,dns, andfsmatch Node. - Node: streams,
vm,AsyncLocalStorage, signals, and child-process IPC match Node. - HTTP serving answers
413for oversized uploads and400for malformed or conflicting headers. - Static files with percent-encoded paths resolve.
- The development server reloads only when files change.
- REPL: Ctrl+C no longer resets an idle session, and Ctrl+D exits a runaway evaluation.
elide initand archive extraction refuse entries that escape the target directory.- Crash reports refuse a planted directory and read
ELIDE_SYS_TMP. --allow-run=nameno longer allows a path-qualified command of that name.elide installno longer hangs on a TLS server that requires a client certificate; javac applies-encoding.- Kotlin:
elide run file.ktworks with compiler plugins; changingkotlin.featuresrecompiles. elide build --workers 2is refused with the--workers=2spelling named.- Tests: a suite that skips itself reports as skipped; every
--execfile is included in the JaCoCo report. - MCP
build/cancelreportscancelled=trueonly when it stopped a build. --heap-dump-on-oomexits after writing the dump.elide servekeeps the newest request visible; subcommand help shows its footer.- Nightly versions pinned by date no longer re-download.
- Kotlin 2.5.0-Beta1; manifests accept Kotlin language and API level
2.5. - JDK 25.0.4.
- Python 3.13.
Recent releases
Earlier releases
Versions 1.0 through 1.2 and the pre-1.0 Classic line are retained for teams maintaining older projects. New projects should use the current release line.
Browse the complete release archive