Releases are listed newest first; select a version to expand it.
Releases
1.6.0 Built-in OpenTelemetry, Python as an optional component, workspaces, a shared build cache, experimental WebAssembly, and faster startup and HTTP serving.
Python is an optional component that elide setup python adds. Projects gain workspaces, a shared build cache, Maven publishing, and export to Maven and IntelliJ. WebAssembly runs as an experimental language.
Faster startup and serving. JavaScript hello-world starts in 1.43 ms, versus Bun’s 1.63 ms, Deno’s 6.31 ms, and Node.js’s 11.70 ms. Peak single-context serving reached 635,510 requests/sec with default settings. With 24 contexts and HTTP pipelining, the same binary peaked at 10,697,938 requests/sec and averaged 10,574,207 across three error-free runs. These are separate workloads. Results and environment · Download the benchmark package
Shared resources, separate state. Serving contexts share a managed heap, garbage collector, eligible JIT code, and telemetry infrastructure. JavaScript globals remain separate. Architecture comparison
OpenTelemetry, built in. Use the standard JavaScript, TypeScript, or Python API; Elide supplies the SDK and export for traces, metrics, logs, and errors. Profiles are experimental. Configure telemetry
Publish to Maven. Build and publish JARs with elide publish. Target your local repository, a remote repository, or Maven Central; --dry-run previews the upload. Maven publishing
VS Code and IntelliJ IDEA. Open an elide.pkl project to sync dependencies and source sets. Build, run, test, debug, and view coverage through the Elide integration. VS Code · IntelliJ IDEA
Report, request, file, directly from your agent or editor. Connect to https://elide.help/mcp to search docs, find examples, report bugs, and request features. Review and confirm each report before it becomes a public issue. Reporting workflow
- OpenRewrite (experimental):
elide rewritelists, previews, and applies OpenRewrite recipes, with dependency type attribution and supported preconditions selecting files before parsing. - Python is now an optional component:
elide setup pythonadds it, the install script takes--with-python, and npm takesELIDE_WITH_PYTHON=1. - Workspaces:
workspace { members { ... } }in the rootelide.pklbuilds several projects as one. project("core").friend()lets a workspace member use a sibling's Kotlininternaldeclarations; a source set sees those of the sets it depends on.ELIDE_REMOTE_CACHE=<url>shares a build cache between machines;ELIDE_REMOTE_CACHE_POLICY=smarttransfers an entry only when that is faster than rebuilding it.elide build --workers=Nlimits build concurrency.- Unknown, missing, or misspelled build options fail before any task runs and name the closest match.
ELIDE_BUILD_TELEMETRYwrites a Chrome trace of the build to disk.- Select JVM tests with
--select=class:...,method:..., orpackage:..., or by tag with--include-tag. elide test --where "'api' in parents"filters JavaScript tests with a CEL expression overname,parents, andfile.elide:celevaluates CEL expressions from JavaScript: compile once, evaluate many times, no side effects.jvm.flagsapply to JVM tests;jvm.defsapply to runs, tests, start scripts, and container images.kotlin.featuresandkotlin.pluginsconfigure Kotlin compiler plugins.elide kotlinc --abi-only(experimental) emits only an ABI jar.dependencies.maven.substitutionsreplaces a Maven artifact with a local jar.- Jar packaging applies
excludes, keeps requested classifiers, and mergesMETA-INF/services. - A
Jvm.JvmApplicationartifact packages a runnable JVM application with start scripts and archives. - Maven publishing:
elide publishinstalls a library into the local Maven repository, or publishes it to a named repository or Maven Central (--to) with checksums andgpgsignatures;--dry-runlists what it would send. - Java annotation processors declared under
processorsrun during compilation. elide run --coveragecollects coverage from a run: JaCoCo for Java and Kotlin, LCOV for JavaScript and TypeScript.elide runandelide testexit with the program's own exit code.--allow-env[=NAMES]lets a manifest read environment variables outside the default allowlist.--max-mem=512mlimits the heap; one-shot runs default to 4 GB.--contexts=Nor--contexts=autoserves from several application contexts.elide project exportprints the manifest as JSON, a Maven POM, or an IntelliJ project; it replaceselide manifest.- WebAssembly (experimental):
elide run app.wasmruns a WASI command, JavaScript and TypeScript load WASM libraries with theWebAssemblyAPI orimport, andelide native-imagecompiles a JVM application to WebAssembly. - The docs MCP server at
https://elide.help/mcpsearches the docs, compares runtimes, and files bug, performance, expectation, and feature reports once you confirm. elide agent perftimes a command against another runtime or an installed Elide version, offline.
- Serving and
fetchuse the native transport by default on Linux and macOS;--transport=nioselects the portable one. - 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 a 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 whole process tree, then exits124;--timeout 0disables it.NODE_TLS_REJECT_UNAUTHORIZED=0prints Node's warning once.- jvmstat 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. - Java compiles with
--release, targetingjvm.target(default Java 21). - A
JavadocJarwhose sources include Kotlin is generated by Dokka;generator = "javadoc"keepsjavadoc. - Release channels are
releaseandnightly, and the install scripts default torelease;previewis gone. - Within a
MAJOR.MINORline, patch releases only add manifest schema properties; a manifest that uses a removed property fails and names the version to pin. - JVM coverage reports go under
.dev/reports/coverage/jvm/. - A top-level
coverageblock inelide.pklreplacestesting.coverage. elide agent bug --jsonprints anelide.report/1skeleton;--kindselectsbug,perf,expectation, orfeature.
- Memory and CPU limits apply in containers with a private cgroup namespace (the Docker and Podman default) and on cgroup v1 and hybrid hosts.
- Startup no longer crashes on linux-arm64; Windows startup and the directory watcher work again.
- Python:
bz2,lzma, andmultiprocessingspawn pools work. - Python: thread switching,
gc.collect(), warnings, andProcessPoolExecutorshutdown match CPython. - Python:
assertruns (__debug__isTrueunless-O),sys.flagsmatches CPython, and-Eand-IignoreVIRTUAL_ENV. - Python: tracebacks from a
.pyfile start at that file; starting a thread without--allow-threadsraisesRuntimeErrornaming the flag. fetchretries an idempotent request on a closed keep-alive connection;httpsappliesca.fetchover HTTP/2 runs at full speed on high-latency links, and a response dropped unread releases its connection.- Node:
MessagePort,BroadcastChannel,dgram,net,dns,fs, streams,vm,AsyncLocalStorage, signals, and child-process IPC match Node. console.logprints objects, arrays, and maps as Node does.AsyncContextvalues reach timer,setImmediate,process.nextTick, andqueueMicrotaskcallbacks;Intl.Segmentersplits Chinese and Japanese words.- TypeScript keeps its source line numbers in stack traces, test failures, coverage, and debugger breakpoints.
- The DAP debugger no longer pauses on entry and prints
Debugger listening on …. - HTTP serving answers
413for oversized uploads,400for malformed or conflicting headers, and408for a stalled request body;elide devanswers405to methods other thanGETandHEAD. - 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 and links that escape the target directory, and extraction drops setuid bits.- Crash reports refuse a planted crash directory and honor
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. - Kotlin: single files can use the
elide-apiannotations, a snippet withoutmainfails with one message, and.ktsfiles in a source set are skipped with a warning. elide kotlinc -Xplugin=runs the all-open, no-arg, sam-with-receiver, assignment, and Lombok plugins, from Maven and Bazel too; other plugin JARs fail with a compiler error instead of a crash.elide kotlinc --plugins serialization,atomicfu, ormetroadds the plugin's runtime; Kotlin projects get the atomicfu runtime, and incremental compiles see Java sources.elide-apiwith versionlatestresolves,jvm.features.testing = falsedrops the bundled JUnit, andelide classpathreports a failed resolution instead of crashing.--insightsapplies to single-file Java and Kotlin runs, and a broad filter no longer stops the JVM.- The archives ship
lib/jspawnhelperexecutable, so Elide asJAVA_HOMEruns forked JVMs such as Surefire's. elide mvnverifies the native Maven download before running it.elide build --workers 2is refused, and the error names the--workers=2spelling.- A task record that cannot be saved no longer makes every task rebuild.
- 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.
elide runandelide initprint each error once,elide testno longer printsBuild failedwhen tests fail, andelide -p DIR adoptadoptsDIR.LANG=frand other bare language tags select that language, and--localeapplies to--help;elide lspreports its version to the editor.- 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.
OpenRewrite (experimental)
elide rewrite lists, previews, and applies OpenRewrite recipes. Add recipe modules to dependencies.maven.devPackages; Elide supplies dependency type information without a build plugin.
Supported preconditions use the reference index to select candidate files before parsing. Other recipes scan the full source set. --no-prefilter skips compilation and parses every Java source.
Use the index directly to resolve classes, inspect members, follow references, and find Java or Kotlin usages with elide index used-by.
Experimental in 1.6.0, with compatibility hardening planned for 1.6.1. Dependency annotation values are not yet supported. Review the dry-run diff before applying changes.
elide rewrite --list
elide rewrite org.openrewrite.java.RemoveUnusedImports --dry-run
elide rewrite org.openrewrite.java.RemoveUnusedImports
1.5.4 Experimental native transport v2, faster HTTP serving, and clearer profiling and tooling diagnostics.
- Opt into the experimental v2 transport with
--transport=v2orELIDE_TRANSPORT_V2=1. An explicit--transportflag takes precedence;autokeeps the existing default.
- Serve static files faster, with cached-file revalidation.
- Reduce HTTP request overhead with native HTTP/1 parsing and response encoding for transport v2, cached URL parsing and header names, and fewer per-response allocations.
- Reduce JavaScript allocation and execution overhead in URL, header, buffer, and filesystem operations.
- Start faster and download a smaller distribution.
- Collect CLI profiler results after asynchronous work and exit handlers finish, including Python project entry points.
- Print profiler results when a long-running program is stopped with Ctrl+C, with bounded shutdown reporting.
- Show expected build-tool failures as user-friendly errors instead of stack traces or crash reports, and render Java and Kotlin compiler diagnostics consistently in direct tool calls and project builds.
1.5.3 Faster startup and HTTP serving, test debugging, resource limits, and fixes for bundled JVM tools.
- Start JavaScript programs faster: a Linux release benchmark cut
elide run hello.jsfrom 31 ms to 7.7 ms. - Serve more HTTP requests: the Linux echo benchmark improved 4.5×, from 25K to 114K requests/sec at 256 connections. Static and development servers also reuse HTTP/1.1 connections for faster repeat requests.
- Download smaller distributions while keeping Java and Kotlin compilers, formatters, and other JVM tools included by default.
- Run JavaScript tests with less overhead and lower memory use after tests finish. Programs using buffers, URLs, events, timers, and console output also allocate less memory.
- Keep native HTTP and WebSocket services within a bounded number of background threads under load.
- Attach a debugger to tests with
elide test --debugger: use Chrome DevTools for JavaScript/TypeScript tests or a JVM debugger for Java/Kotlin tests. Select a JVM port with--debugger=5005. - TAP test reports include test-start events and associate output with the test that produced it, helping editors show progress and diagnostics.
- Limit JavaScript/TypeScript workers and open
node:fshandles with--limit=workers=COUNTand--limit=fds=COUNTon scripts andelide run. Limits include descendant workers;--timeoutrequests cleanup of the script and its workers. - Select trusted execution with
--sandbox=trustedand explicitly control native access with--allow-nativeor--no-native. Bare--sandboxkeeps its filesystem-only behavior. - Pin a nightly manifest schema at
pkl.elide.dev/<version>-<stamp>/project.pkl; Elide rejects stamps that do not match its embedded build.
Debugging tests · Permissions and resource limits · Manifest reference
- Bundled JVM tools work through the standard macOS installation:
elide javac -- -help, Java compilation, and other JVM tool commands no longer incorrectly report thatjvmtoolsis missing whenelideis launched through an installation symlink. No separate toolchain installation is needed. - Keep filesystem, network, and subprocess permissions scoped to each workload, including its workers and background file operations, so one workload’s settings do not change another’s access.
- Cancel an HTTP request without a late cancellation interrupting an unrelated request.
- JVM debugging now listens on
127.0.0.1by default. For remote attachment, set an explicit address such as--debugger=0.0.0.0:5005. Invalid debugger options are rejected instead of silently running without a debugger. - Keep update notices out of redirected stderr and CI logs, and report timeout errors in the selected language.
- Fix
elide classpath -q. Tool wrappers reject misplaced--version; pass tool flags after--, as inelide jar -- --version. Formatter help explains how to check without rewriting files. - Copy code snippets throughout the docs with a dedicated copy button.
1.5.2
Native HTTP transport, flight recordings and heap dumps, typed build flags, elide adopt, a TAP reporter, and broad CLI and Node fixes.
- New
elide adoptcommand adopts Elide in an existing project through Claude or Codex; every prompt can be answered up front for non-interactive use. - Typed build flags:
--flag=NAME[=VALUE]or-fNAMEon every project-aware command, read frombuild.flagsin the manifest. See Build Flags. - An ES module that exports a
fetchhandler runs as a server underelide run,elide serve, andelide dev; interactiveserveanddevshow the serving TUI for scripts. - Native builds route
fetchandElide.servethrough a native HTTP transport: HTTP/1.1 and HTTP/2, streaming bodies, cancellation, graceful shutdown, and HTTP proxy support.elide inforeports the active backend. elide test --reporter tapemits one TAP 13 stream for JavaScript and JVM tests;--reporter-outfilewrites.tapfiles.- Capture JFR recordings and heap dumps with
--jfr,--jfr-settings,--heap-dump, and--heap-dump-on-oom, or familiar-XX:options; seeelide help instruments. - Inspect running native processes with jvmstat and the JDK's
jcmdon Linux and macOS: start and dump recordings, capture heaps, and print thread stacks. - Profile JIT-compiled guest code with
--jitdumpand Linuxperf. - Elide-specific JFR events record runtime boot, guest program start and exit, and HTTP request lifecycle.
- Debugger listeners bind to configurable hosts and ports.
- The project manifest Pkl schema is published per Elide release at
pkl.elide.dev/<version>/, for editor tooling andamendsclauses; a manifest may pin one of those versions, and a pin newer than the Elide evaluating it is read with that Elide's schema.
elide runsent a JVM program's stdout to stderr. Guest output is now written to Elide's own streams byte for byte, redirected output is free of ANSI, and--no-colorand--quietapply to build output.elide run --debuggerno longer starts an unrequested MCP endpoint; the inspector identifies itself as Elide, suspension messages are clearer, and an errant flag warning is gone.--versionand--help-allwork on commands with required arguments, and--help-alldescribes the selected command rather than the root.--debuggerand--profilerare global like the rest of the diagnostics flags;--quietno longer suppressesmanifest,project info, orproject adviceoutput; stale flags were removed from help.elide testrejects unknown--reportervalues, parses-t=pattern, skipsvendor/, resolves the project from a named test path, and skips JVM tests when paths match only JavaScript tests.elide initprints a diagnostic on every non-interactive failure path.elide javaformat --list-diffsno longer rewrites files in place, andelide mvnlocates Maven home.- Node:
node:testfiles run outsideelide testfail with an error instead of being skipped silently;scryptaccepts derived-key lengths below 16;performance.measureuses a named start mark; queuing strategysizeis read correctly;spawnSyncappliesinheritandignorestdio;dns.lookupwithall; unknownnode:imports throw;performance.nodeTimingand timeout messages match Node. - Ticks and microtasks now run after each timer callback, matching Node's ordering; stream destroy callbacks run at the correct time.
- Context scheduling handles creation failures, shutdown races, and full callback queues.
--profiler=memtracingno longer aborts at startup.- Maven module dependencies are added to the
elide native-imageclasspath; a build fails when it references a missing artifact. - The apt repository's signing key verifies on current Ubuntu releases.
- Native builds on Linux and macOS arm64 allocate through one mimalloc core across Rust, C, and runtime unmanaged memory.
- The JVM toolchain is in a shared library beside the binary, loaded on demand; the main executable is smaller.
- Terminal rendering moved to a single Rust renderer, replacing the vendored JVM terminal libraries.
- The
elide helpcorpus is a separate file atdoc/elide-docs.binbeside the binary;ELIDE_DOCSoverrides its location.
- Upgraded the Rust toolchain to
1.100.xand LLVM to23.x. - New guides: Monitoring and Profiling, Build Flags, VS Code and IntelliJ plugins, native Maven, architecture tours, and a generated embedded-versions page.
1.5.1
Small bugfix release following 1.5.0: REPL multiline fixes and Node TLS environment variables for fetch.
fetchreads Node's TLS environment variables:NODE_TLS_REJECT_UNAUTHORIZED,NODE_USE_SYSTEM_CA, andNODE_EXTRA_CA_CERTS.
- The REPL handles newlines correctly and no longer renders multiline prompts incorrectly.
1.5.0 Updates the Python and JVM toolchains and expands Node compatibility across core runtime APIs.
- The embedded Python runtime and bundled standard library target Python
3.13. - The bundled Kotlin compiler is updated to
2.4.10; the Java toolchain targets JDK 25. elide:crypto,elide:fs,elide:net, andelide:processnow match theirnode:*modules. Compression remains available throughnode:zliband the Compression Streams API; there is noelide:compressionmodule.- Buffer, timer handles, process and OS data, performance APIs, async context and abort behavior, TLS, and other Node compatibility were expanded or corrected.
process.envcan be replaced, andprocess.loadEnvFile([path])explicitly loads dotenv files.
node:zlibadds Zstandard support, stream constructors,crc32, andcodes.node:utiladds formatting,callbackify,inherits, deep equality, deprecation and debug helpers, system-error helpers, ANSI stripping and styling, and dotenv parsing.PerformanceObserver.supportedEntryTypesincludesfunction, and the module loader exposesnode:httpandnode:tls.
- The CLI, project, installation, and language guides were consolidated and verified against the 1.5 binary.
- Server guidance now reflects the static and development servers' observed
3000default.
1.4.7 Installs native Maven images on demand, adds Spring-specialized builds, and fixes the nightly upgrade prompt.
elide mvn --flavor spring@<version>selects a native Maven image specialized for a Spring Boot line. Without the flag, the project's POM is read for its Boot version and the matching image is chosen, or the generic one if none matches.
elide upgrade --channel=nightlyno longer offers a build to itself asv1.4.6 -> v1.4.6. Both sides of the message include the datestamp and commit that identify a nightly, so the running build and the candidate are distinguishable.elide javaformatandelide ktfmtwalk directory arguments.elide initno longer requires a TTY for the documented non-interactive run.elide serve --hostis applied.elide install --withrejects unknown classifiers.elide testruns sequentially by default on both engines.
- The distribution no longer bundles native Maven images.
elide mvninstalls the image it needs on first use.
1.4.6
Parallelizes elide test, narrows elide install to Maven by default, and reorganizes the CLI help.
elide --helpnow groups commands under four headings and hides ten rarely used commands;--help-allprints everything.- A
--profiler=memtracingmode that uses the runtime memory tracer. - Build tools record their argument vectors as
<tool>.argsbeside primary outputs —javacandkotlincas well asnative-image— and the recorded argfiles are inputs to the build cache.
- All manifest evaluations now share one execution layer, fixing "invalid sharing of AST nodes" errors on a second manifest evaluation.
- Precompiler diagnostics are scoped per operation, so concurrent precompiles no longer report each other's errors.
- Maven POM profiles activated by
<activation><condition>expressions now evaluate correctly. - Mutable multipath container operations are implemented rather than stubbed.
elide testruns in parallel on both engines:--concurrencydefaults to one worker per CPU (test files for JavaScript, test classes for the JVM),--concurrency=1forces a sequential run, and--concurrency=0is rejected at parse time. Discovery overhead is reduced, and JVM tests are no longer recompiled on every invocation.- Coverage is now opt-in on both test engines: collection happens only when
--coverageis passed or the manifest enables it, and the manifest default is now off. elide installinstalls Maven dependencies and nothing else by default; a neighboringpackage.json,pyproject.toml, orrequirements.txtproduces a one-line note on stderr, and--ecosystems=<names>installs other ecosystems.uvis no longer bundled.- The default
elide test --coveragereport is a rollup summary; per-file rows appear with--verbose. - The download is roughly 30 MiB smaller.
1.4.5 Retires the closed-source subsystems for the Apache-2.0 open-source release, adds CLI commands for AI coding agents, and fixes incorrect results across test, format, run, install, and classpath.
elide agent, commands for AI coding agents:agent helpprints documentation as Markdown on stdout,agent diagnosticsreports status (with--json), andagent bugassembles a bug report.elide help <topic> --format=markdownworks everywhere, andelide helpno longer panics for non-interactive callers.- Elide detects when an AI coding agent is running it and switches to plain output — no ANSI sequences, no frames — in both the parsing and rendering layers.
elide installwrites resolved classpath files to.dev/dependencies/m2/{compile,runtime,test,processors}.classpath, in the same formatelide classpath <usage>prints, so external tools can read a classpath without invoking Elide.- Distributions include the Apache-2.0
LICENSEandNOTICE.
elide formaton Java silently did nothing in write mode — formatted output was discarded instead of written back — and check/dry-run modes mis-reported results for both Java and Kotlin.elide test <path>treats paths as a real filter: zero matches now fails and names the paths, and the JVM engine no longer runs the whole suite unfiltered while reporting success. A package-like bare token maps to a JUnit package selector, and an existing path always takes precedence, resolved against the project root.-t/--test-name-patternperforms the documented unanchored search on the JVM engine, and an empty filtered run exits non-zero.elide run <name>follows a total, documented resolution order — source file, thenelide.pklscripts, thenpackage.json/pyproject.tomlscripts, thennode_modules/.bin/<name>— and produces a real diagnostic when nothing matches.elide build <target>accepts the documented target groups, andelide install --withis applied.elide classpatherrors on an unparseable usage spec instead of silently returning the main compile classpath, and Maven exclusions are applied.--timeoutstarts before fast-path dispatch, so it now applies torepl,serve,dev,help,agent, andinit.elide servedefaults to the documented port 8080,kotlincaccepts--max-errors, and a mistyped subcommand produces a clear error.--no-color,NO_COLOR, andTERM=dumbapply to the help masthead and progress output; a shared terminal check letselide init < /dev/nullexit cleanly; and the REPL reads piped stdin.- Usage errors have their own exit code, distinct from guest failures, and error color is used only on a real terminal.
process.exitcodes are preserved on the inline-snippet path, and top-level-csnippets match CPythonargvsemantics.- Retired subcommand names fail gracefully.
- Test discovery never descends into hidden directories, and a failing JavaScript test file prints its failure message.
- Python
zoneinforesolves timezones; constructing anyZoneInfopreviously raised. - A producer failure mid-body on a streamed HTTP response aborts the response instead of hanging the client.
- macOS/arm64: unwind information is preserved for native frames, so an exception thrown through a native frame no longer aborts; the mach exception port no longer leaks into child processes; and the crash handler is async-signal safe.
- Image compression entrypoints return cleanly instead of failing to link at runtime.
elide installno longer recurses into its own post-install step and deadlocks an npm install.- Diagnostics carry source identity across the native bridge, logging configuration is safe for concurrent readers, and log levels resolve by longest matching prefix.
- IPC socket writes are flushed to the peer, socket files are unlinked on drop, and a listener only unlinks the socket it bound.
- Builds without Python fail on an empty compile classpath instead of producing many "package does not exist" errors.
- The default container base image is pinned.
- The
jib,aube,uv,pro, ands3subcommands are permanently retired, along with the telemetry, cloud, sidecar, and licensing subsystems; their documentation is removed across locales.python,javap,jdeps,javadoc,native-image, andmanifestare unaffected. - Distributions no longer include duplicate or unreachable files.
- Kotlin language and API level are now 2.4.
- The Homebrew tap now receives an automatic version bump for each nightly release.
1.4.4
Turns elide test into a single cross-language test runner, adds Java language-server support and pom.xml manifests, and moves dependency installation onto the managed toolchain.
elide testis now one test runner for every language: JavaScript and TypeScript tests are discovered with no configuration (noelide.pklrequired) and run alongside JVM tests as one reported run — one tally, one exit code, one XML report format, one coverage table.- JUnit console output uses the build display's format.
elide lspsupports Java, withgoogle-java-formatintegrated.pom.xmlis accepted as a foreign project manifest.- Elide's own CI now checks Java and Kotlin formatting with
elide format. - The
native-imageargument vector is recorded beside image outputs.
- TypeScript entry metadata.
- Dependency resolution — including classifier JARs from Maven Central — moves off the Elide Classic bootstrap and onto the managed toolchain via
elide install. - JVM code can execute inside the parent
elideprocess; opt in withSPAWN_PROCESS=falsein native mode. TextDecoderusesencoding_rs; URL setters work,XMLHttpRequestacceptsdata:URLs, andfetch()resolves relative URLs.
- Dependency updates across ecosystems include upstream security fixes.
1.4.3 Fixes native-image build cache invalidation and makes native Windows builds work.
- Native-image task cache keys now fingerprint the contents of configuration inputs, so editing reachability metadata under
-H:ConfigurationFileDirectoriesor regenerating a profile correctly invalidates the cached image; previously only the flag text was tracked. - Native-image output and configuration paths are relative to the resolved project root, configuration and linker inputs are fingerprinted through symlinks and external paths, and the complete JVM
conftree — includingjava.security— is packaged.
- Windows builds work natively: the builder no longer forces container mode on Windows and prefers a resolved native binary, postinstall resolves
elidefrom thePATH, and the docs build script runs on an explicit 32 MiB stack.
1.4.2 Runs Java and Kotlin sources directly, adds the WHATWG legacy text encodings, and repairs JVM build task-graph behavior.
- Java and Kotlin source files run directly with
elide run. elide runexecutes scripts declared inelide.pkl,package.json, andpyproject.toml.- Every legacy encoding in the WHATWG Encoding Standard for
TextDecoder— the single-byte families (windows-125x,iso-8859-*,koi8-r/u,macintosh, and others) and the multi-byte CJK encodings (gbk/gb18030,big5,euc-jp,iso-2022-jp,shift_jis,euc-kr) with spec-correct streaming and error semantics. - A Spring shorthand for JVM dependency declarations.
- Generic XML test reports.
- Elide itself can be built without Python support via
--no-python.
- Maven dependency resolution now records the full dependency graph instead of a spanning tree, so shared transitive dependencies resolve correctly in multi-scope projects (for example Spring apps).
- JVM build task-graph fixes:
javactargeting prefers--releaseand falls back to the default release when unset,-parametersis always passed, Kotlin tasks only run when Kotlin sources exist, and run-task resources resolve correctly. - Worker threads now report their real script path via
__filename,__dirname, andprocess.argv, and an entry module that imports itself resolves to a single module instance by canonical path. - Ctrl+C now interrupts
elide init. - Arguments after
--are forwarded to JVM programs resolved from the project manifest.
- Build targets may be named without a prefix.
--no-cachealso skips local build state.- macOS distributions carry all eight executables, and bundled dylibs are ad-hoc signed.
- The documentation site is completely rebuilt.
1.4.1 Implements node:net, node:dgram, and node:child_process, adds Python insights, and improves MCP tooling and CLI error output.
node:net: TCP and Unix-domain sockets and servers with DNS resolution and Happy-Eyeballs dialing, plusBlockListandSocketAddress.node:dgram: UDP sockets covering unicast, connected, broadcast, and multicast transports with full socket-option support.node:child_process: the whole spawn family (spawn,exec,execFile, their sync forms) andforkwith a working IPC channel, controlled by new--allow-run/--deny-runsandbox flags.- Python support in watch insight scripts and targets, plus insight throw hooks, error capture, and argument destructuring.
- The error-stack accessor proposal is now enabled for JavaScript.
node:vmcontexts now bindthisandglobalThisto the sandbox and hide the internal contextify marker;node:bufferpopulatesbuffer.constantsand validates allocation sizes with coded errors;process.argv[1]and__filenameresolve to the real script path.- Python: crash loading the
timemodule,-mmodule parameter passing, and buffered stdout/stderr now flushing on exit across all eval paths. - CLI: plain, parseable error output on non-interactive terminals, and the REPL accepts experimental options on language-probe engines.
- Dependency installation: npm overrides no longer corrupt install data, and
package.jsonparsing handles previously failing edge cases. - MCP and insights: attach failures are reported, in-flight requests are processed when stdio closes, source-path errors are clearer, and deeply nested values render completely.
- The
linux-amd64binary runs on older Linux distributions again.
1.4.0 Updates the runtime and adds a large set of JavaScript and Python compatibility fixes.
- Broader Node.js compatibility, including
node:path, process behavior,node:assert,node:util,node:test, module shims, stream behavior, and worker-thread support. - An
elide pythonsubcommand with CPython-style flag compatibility.
- JavaScript module loading, CommonJS resolution, worker-thread runtime ownership, structured clone and message ports, stream lifecycle behavior, fetch URL resolution, and catchable guest errors for out-of-CWD module failures.
- Embedded native-image operation, embedded JVM staging, Pkl engine isolation, and Python builtins imports.
- NPM platform packages now download the Elide binary during install instead of bundling very large tarballs.
- Updated the runtime and toolchain base, the managed toolchains, and the profile-guided optimization configuration.
1.3.6 Focuses on installers, dependency installation, JVM tool fixes, MCP improvements, Python layout fixes, and JavaScript conformance hooks.
- Packaged installer support around embedded
aubefor NPM anduvfor PyPI, with unified install smoke coverage. - Local JAR dependencies for JVM projects.
- MCP insight and debugging tools, including project/build inspection and guest-code execution support.
- JavaScript conformance hooks: global
print, plain scriptable error output, and$262host API support for Test262 tooling. - Web templates for
elide init.
- The docs Examples button, by adding the backing code samples page.
elide runfor spawned JVM processes that read from stdin.- MCP HTTP mode and high-level insight scripting behavior.
javaformatandktfmthelper handling for@argfilearguments.- Several installer and snippet-runner issues.
- Embedded
javaccompatibility with ambientCLASSPATHdefaults and DocLint reflection behavior. - Runtime error reporting for module-resolution failures.
- Python home selection.
- Temporary writes, moved into a dedicated process directory that is freed on exit.
- NPM publishing reliability, by freeing disk space and reporting publish errors.
1.3.5 Improves Kotlin and Bazel workflows, adds a fuller Node filesystem implementation, and fixes update and docs behavior.
- Java ABI output for mixed Kotlin and Java source sets in
elide kotlinc --abi-only. - Bazel-aware Kotlin compiler diagnostics and project-relative source paths.
node:fsandnode:fs/promisessupport with a filesystem capability sandbox.- A docs "File an issue" action, with fixed mobile layout for page actions.
- Explicit
elide kotlinc --plugins=<suite>selections now take precedence. elide upgradenow downloads the full archive, not only the binary, when resources are needed.- Docs crawler and discovery files, and robots behavior.
- NPM publishing, by moving
@elide-dev/elidepublishing into a dedicated, testable workflow.
- Disabled
telemetry,cloud, andsidecarby default behind optional Cargo features.
1.3.4 Centered on JVM build performance and Kotlin compiler correctness under persistent-worker use.
- Kotlin Build Tools API work for Elide JVM builds.
- Pro i18n support.
- Kotlin incremental compilation behavior, with digest-driven invalidation, heap sizing, and classpath-default handling.
- Cached warm
javacclasspath state in persistent workers to reduce repeated classpath indexing.
1.3.3 Adds Python 3.12 and native compression work, expands NPM distribution infrastructure, and fixes several JVM build and transport issues.
- Python interop, Python 3.12 alignment, and
sys.argvfixes. - Native compression for gzip, Brotli, and Zstandard, replacing
zstd-jniandbrotli4jin the transport path. - NPM distribution infrastructure for Elide binary packages.
- Publishing infrastructure for
@elide-dev/types. - Roll-up behavior for excessive Kotlin compiler diagnostics.
- Python cold start.
- Updated dependencies to address open security alerts.
- zstd JNI class registration on the dynamic dylib path.
- Native-image task output path semantics.
- Kotlin stdlib inclusion when Kotlin sources are present.
- Kotlin compiler API and language-version argument capture.
- Build-cache fingerprint corruption after cache restore.
- External native-image driver selection.
- JVM codegen, so build and version config stay in sync.
- Build-cache file attribute preservation.
1.3.2 Improves CLI version reporting and upgrade behavior, fixes Windows installer packaging, and closes Python and native-image resource gaps.
- The Elide masthead in
elide info. - Channel and precise-version awareness to
elide --versionandelide info.
- Made
elide upgradechannel-aware and cleaned up user-facing upgrade output. - musl and LTO builds, by restoring Rust memory intrinsics via
compiler-builtins-mem. - License registration pages to use
elide pro activate. - The Windows installer, now syncing the staged Elide home instead of relying on stale hand-enumerated file paths.
- Python stdlib version resolution from the on-disk Python home layout.
- Native-image
jdepsresource bundle inclusion for used-dependency reports. - Docs for multiplex persistent-worker support.
1.3.1
Adds jdeps, improves JS crypto support, and fixes Kotlin, Bazel, and formatter regressions.
elide jdeps.node:crypto, Web Crypto digest behavior, and transparent tool passthrough.- Reference and guide docs for remaining runtime and tooling topics.
- Automatic recovery from corrupt Kotlin incremental-compile caches.
- Bazel flags.
- Formatter check-mode output and Kotlin source counting.
- Generated Java projects, so they no longer include Kotlin dependencies.
1.3.0 Early installer, project-template, and native-image fixes from the reviewed PR range.
elide inittemplate and metadata improvements, including inverted blocks, binary files, and conditionalbuild/test/runinvocation support.
- Installer script argument parsing and Unix executable permissions.
- Native-image localization configuration for ICU.
- Missing annotations for Java test compilations.
- A build-time
nanoTimevalue that caused instant timeout behavior.
1.0.x – 1.2.x Early prerelease lines, archived for reference. They should not be used for new projects.
Elide Classic
The pre-1.0 code line preserved on the v5 branch, useful mainly for understanding older projects pinned to it.
Classic used beta and release-candidate versions such as 1.0.0-beta11-rc6. Treat it as historical unless you are maintaining an existing project on that branch.
About This Page
This page is curated from recent merged changes, plus public release tags on
elide-dev/elide.
Dependency-only, CI-only, and test-only changes are omitted unless they affect
installation, security, packaging, or runtime behavior. Version grouping uses
release milestones where they are set and the public nightly release line
otherwise.