Saltar al contenido

Esta página aún no está traducida. Se muestra en inglés.

Changelog

Release notes for every Elide version, newest first: what was added, changed and fixed in each release, with links to its GitHub release.

En esta página
Open in ChatGPTOpen in Claude

Releases are listed newest first; select a version to expand it.

Latest release 1.6.0 For install and upgrade commands, see Releases.

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

Added
  • OpenRewrite (experimental): elide rewrite lists, previews, and applies OpenRewrite recipes, with dependency type attribution and supported preconditions selecting files before parsing.
  • Python is now an optional component: elide setup python adds it, the install script takes --with-python, and npm takes ELIDE_WITH_PYTHON=1.
  • Workspaces: workspace { members { ... } } in the root elide.pkl builds several projects as one.
  • project("core").friend() lets a workspace member use a sibling's Kotlin internal declarations; 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=smart transfers an entry only when that is faster than rebuilding it.
  • elide build --workers=N limits build concurrency.
  • Unknown, missing, or misspelled build options fail before any task runs and name the closest match.
  • ELIDE_BUILD_TELEMETRY writes a Chrome trace of the build to disk.
  • Select JVM tests with --select=class:..., method:..., or package:..., or by tag with --include-tag.
  • elide test --where "'api' in parents" filters JavaScript tests with a CEL expression over name, parents, and file.
  • elide:cel evaluates CEL expressions from JavaScript: compile once, evaluate many times, no side effects.
  • jvm.flags apply to JVM tests; jvm.defs apply to runs, tests, start scripts, and container images.
  • kotlin.features and kotlin.plugins configure Kotlin compiler plugins.
  • elide kotlinc --abi-only (experimental) emits only an ABI jar.
  • dependencies.maven.substitutions replaces a Maven artifact with a local jar.
  • Jar packaging applies excludes, keeps requested classifiers, and merges META-INF/services.
  • A Jvm.JvmApplication artifact packages a runnable JVM application with start scripts and archives.
  • Maven publishing: elide publish installs a library into the local Maven repository, or publishes it to a named repository or Maven Central (--to) with checksums and gpg signatures; --dry-run lists what it would send.
  • Java annotation processors declared under processors run during compilation.
  • elide run --coverage collects coverage from a run: JaCoCo for Java and Kotlin, LCOV for JavaScript and TypeScript.
  • elide run and elide test exit with the program's own exit code.
  • --allow-env[=NAMES] lets a manifest read environment variables outside the default allowlist.
  • --max-mem=512m limits the heap; one-shot runs default to 4 GB.
  • --contexts=N or --contexts=auto serves from several application contexts.
  • elide project export prints the manifest as JSON, a Maven POM, or an IntelliJ project; it replaces elide manifest.
  • WebAssembly (experimental): elide run app.wasm runs a WASI command, JavaScript and TypeScript load WASM libraries with the WebAssembly API or import, and elide native-image compiles a JVM application to WebAssembly.
  • The docs MCP server at https://elide.help/mcp searches the docs, compares runtimes, and files bug, performance, expectation, and feature reports once you confirm.
  • elide agent perf times a command against another runtime or an installed Elide version, offline.

Workspaces · WebAssembly and WASI · Source sets

Changed
  • Serving and fetch use the native transport by default on Linux and macOS; --transport=nio selects the portable one.
  • A program starts only the languages it uses; --interop lets JavaScript, TypeScript, and Python call each other.
  • Source sets follow convention: src/<set>/<language>, src/<set>, then a flat src or test.
  • elide test stops discovery at a nested project; name its path to run it.
  • A --release build no longer counts as up to date after a debug build.
  • Plain http:// Maven repositories are refused except on loopback; --allow-http-repositories allows them.
  • --timeout kills the whole process tree, then exits 124; --timeout 0 disables it.
  • NODE_TLS_REJECT_UNAUTHORIZED=0 prints Node's warning once.
  • jvmstat is off by default; --vmstat makes the process visible to jps, jstat, and jcmd.
  • Development, MCP, and CDP servers accept only local Host and Origin values; elide mcp reads ELIDE_MCP_TOKEN.
  • A pinned version that is not installed prompts before downloading; ELIDE_AUTO_INSTALL=1 answers yes.
  • Java compiles with --release, targeting jvm.target (default Java 21).
  • A JavadocJar whose sources include Kotlin is generated by Dokka; generator = "javadoc" keeps javadoc.
  • Release channels are release and nightly, and the install scripts default to release; preview is gone.
  • Within a MAJOR.MINOR line, 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 coverage block in elide.pkl replaces testing.coverage.
  • elide agent bug --json prints an elide.report/1 skeleton; --kind selects bug, perf, expectation, or feature.
Fixed
  • 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, and multiprocessing spawn pools work.
  • Python: thread switching, gc.collect(), warnings, and ProcessPoolExecutor shutdown match CPython.
  • Python: assert runs (__debug__ is True unless -O), sys.flags matches CPython, and -E and -I ignore VIRTUAL_ENV.
  • Python: tracebacks from a .py file start at that file; starting a thread without --allow-threads raises RuntimeError naming the flag.
  • fetch retries an idempotent request on a closed keep-alive connection; https applies ca.
  • fetch over 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.log prints objects, arrays, and maps as Node does.
  • AsyncContext values reach timer, setImmediate, process.nextTick, and queueMicrotask callbacks; Intl.Segmenter splits 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 413 for oversized uploads, 400 for malformed or conflicting headers, and 408 for a stalled request body; elide dev answers 405 to methods other than GET and HEAD.
  • 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 init and 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=name no longer allows a path-qualified command of that name.
  • elide install no longer hangs on a TLS server that requires a client certificate.
  • javac applies -encoding.
  • Kotlin: elide run file.kt works with compiler plugins; changing kotlin.features recompiles.
  • Kotlin: single files can use the elide-api annotations, a snippet without main fails with one message, and .kts files 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, or metro adds the plugin's runtime; Kotlin projects get the atomicfu runtime, and incremental compiles see Java sources.
  • elide-api with version latest resolves, jvm.features.testing = false drops the bundled JUnit, and elide classpath reports a failed resolution instead of crashing.
  • --insights applies to single-file Java and Kotlin runs, and a broad filter no longer stops the JVM.
  • The archives ship lib/jspawnhelper executable, so Elide as JAVA_HOME runs forked JVMs such as Surefire's.
  • elide mvn verifies the native Maven download before running it.
  • elide build --workers 2 is refused, and the error names the --workers=2 spelling.
  • A task record that cannot be saved no longer makes every task rebuild.
  • Tests: a suite that skips itself reports as skipped; every --exec file is included in the JaCoCo report.
  • MCP build/cancel reports cancelled=true only when it stopped a build.
  • --heap-dump-on-oom exits after writing the dump.
  • elide serve keeps the newest request visible.
  • Subcommand help shows its footer.
  • elide run and elide init print each error once, elide test no longer prints Build failed when tests fail, and elide -p DIR adopt adopts DIR.
  • LANG=fr and other bare language tags select that language, and --locale applies to --help; elide lsp reports its version to the editor.
  • Nightly versions pinned by date no longer re-download.
Maintenance
  • 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

OpenRewrite workflow · Dependency code index

1.5.4 Experimental native transport v2, faster HTTP serving, and clearer profiling and tooling diagnostics.
Added
  • Opt into the experimental v2 transport with --transport=v2 or ELIDE_TRANSPORT_V2=1. An explicit --transport flag takes precedence; auto keeps the existing default.
Changed
  • 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.
Fixed
  • 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.
Changed
  • Start JavaScript programs faster: a Linux release benchmark cut elide run hello.js from 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.

Development Server

Added
  • 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:fs handles with --limit=workers=COUNT and --limit=fds=COUNT on scripts and elide run. Limits include descendant workers; --timeout requests cleanup of the script and its workers.
  • Select trusted execution with --sandbox=trusted and explicitly control native access with --allow-native or --no-native. Bare --sandbox keeps 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

Fixed
  • Bundled JVM tools work through the standard macOS installation: elide javac -- -help, Java compilation, and other JVM tool commands no longer incorrectly report that jvmtools is missing when elide is 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.1 by 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 in elide jar -- --version. Formatter help explains how to check without rewriting files.
  • Copy code snippets throughout the docs with a dedicated copy button.

CLI reference

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.
Added
  • New elide adopt command 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 -fNAME on every project-aware command, read from build.flags in the manifest. See Build Flags.
  • An ES module that exports a fetch handler runs as a server under elide run, elide serve, and elide dev; interactive serve and dev show the serving TUI for scripts.
  • Native builds route fetch and Elide.serve through a native HTTP transport: HTTP/1.1 and HTTP/2, streaming bodies, cancellation, graceful shutdown, and HTTP proxy support. elide info reports the active backend.
  • elide test --reporter tap emits one TAP 13 stream for JavaScript and JVM tests; --reporter-outfile writes .tap files.
  • Capture JFR recordings and heap dumps with --jfr, --jfr-settings, --heap-dump, and --heap-dump-on-oom, or familiar -XX: options; see elide help instruments.
  • Inspect running native processes with jvmstat and the JDK's jcmd on Linux and macOS: start and dump recordings, capture heaps, and print thread stacks.
  • Profile JIT-compiled guest code with --jitdump and Linux perf.
  • 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 and amends clauses; a manifest may pin one of those versions, and a pin newer than the Elide evaluating it is read with that Elide's schema.
Fixed
  • elide run sent 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-color and --quiet apply to build output.
  • elide run --debugger no longer starts an unrequested MCP endpoint; the inspector identifies itself as Elide, suspension messages are clearer, and an errant flag warning is gone.
  • --version and --help-all work on commands with required arguments, and --help-all describes the selected command rather than the root.
  • --debugger and --profiler are global like the rest of the diagnostics flags; --quiet no longer suppresses manifest, project info, or project advice output; stale flags were removed from help.
  • elide test rejects unknown --reporter values, parses -t=pattern, skips vendor/, resolves the project from a named test path, and skips JVM tests when paths match only JavaScript tests.
  • elide init prints a diagnostic on every non-interactive failure path.
  • elide javaformat --list-diffs no longer rewrites files in place, and elide mvn locates Maven home.
  • Node: node:test files run outside elide test fail with an error instead of being skipped silently; scrypt accepts derived-key lengths below 16; performance.measure uses a named start mark; queuing strategy size is read correctly; spawnSync applies inherit and ignore stdio; dns.lookup with all; unknown node: imports throw; performance.nodeTiming and 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=memtracing no longer aborts at startup.
  • Maven module dependencies are added to the elide native-image classpath; a build fails when it references a missing artifact.
  • The apt repository's signing key verifies on current Ubuntu releases.
Changed
  • 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 help corpus is a separate file at doc/elide-docs.bin beside the binary; ELIDE_DOCS overrides its location.
Maintenance
  • Upgraded the Rust toolchain to 1.100.x and LLVM to 23.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.
Added
  • fetch reads Node's TLS environment variables: NODE_TLS_REJECT_UNAUTHORIZED, NODE_USE_SYSTEM_CA, and NODE_EXTRA_CA_CERTS.
Fixed
  • 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.
Changed
  • 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, and elide:process now match their node:* modules. Compression remains available through node:zlib and the Compression Streams API; there is no elide:compression module.
  • Buffer, timer handles, process and OS data, performance APIs, async context and abort behavior, TLS, and other Node compatibility were expanded or corrected.
  • process.env can be replaced, and process.loadEnvFile([path]) explicitly loads dotenv files.
Added
  • node:zlib adds Zstandard support, stream constructors, crc32, and codes.
  • node:util adds formatting, callbackify, inherits, deep equality, deprecation and debug helpers, system-error helpers, ANSI stripping and styling, and dotenv parsing.
  • PerformanceObserver.supportedEntryTypes includes function, and the module loader exposes node:http and node:tls.
Maintenance
  • 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 3000 default.
1.4.7 Installs native Maven images on demand, adds Spring-specialized builds, and fixes the nightly upgrade prompt.
Added
  • 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.
Fixed
  • elide upgrade --channel=nightly no longer offers a build to itself as v1.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 javaformat and elide ktfmt walk directory arguments.
  • elide init no longer requires a TTY for the documented non-interactive run.
  • elide serve --host is applied.
  • elide install --with rejects unknown classifiers.
  • elide test runs sequentially by default on both engines.
Changed
  • The distribution no longer bundles native Maven images. elide mvn installs 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.
Added
  • elide --help now groups commands under four headings and hides ten rarely used commands; --help-all prints everything.
  • A --profiler=memtracing mode that uses the runtime memory tracer.
  • Build tools record their argument vectors as <tool>.args beside primary outputs — javac and kotlinc as well as native-image — and the recorded argfiles are inputs to the build cache.
Fixed
  • 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.
Changed
  • elide test runs in parallel on both engines: --concurrency defaults to one worker per CPU (test files for JavaScript, test classes for the JVM), --concurrency=1 forces a sequential run, and --concurrency=0 is 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 --coverage is passed or the manifest enables it, and the manifest default is now off.
  • elide install installs Maven dependencies and nothing else by default; a neighboring package.json, pyproject.toml, or requirements.txt produces a one-line note on stderr, and --ecosystems=<names> installs other ecosystems. uv is no longer bundled.
  • The default elide test --coverage report 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.
Added
  • elide agent, commands for AI coding agents: agent help prints documentation as Markdown on stdout, agent diagnostics reports status (with --json), and agent bug assembles a bug report. elide help <topic> --format=markdown works everywhere, and elide help no 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 install writes resolved classpath files to .dev/dependencies/m2/{compile,runtime,test,processors}.classpath, in the same format elide classpath <usage> prints, so external tools can read a classpath without invoking Elide.
  • Distributions include the Apache-2.0 LICENSE and NOTICE.
Fixed
  • elide format on 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-pattern performs 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, then elide.pkl scripts, then package.json/pyproject.toml scripts, then node_modules/.bin/<name> — and produces a real diagnostic when nothing matches.
  • elide build <target> accepts the documented target groups, and elide install --with is applied.
  • elide classpath errors on an unparseable usage spec instead of silently returning the main compile classpath, and Maven exclusions are applied.
  • --timeout starts before fast-path dispatch, so it now applies to repl, serve, dev, help, agent, and init.
  • elide serve defaults to the documented port 8080, kotlinc accepts --max-errors, and a mistyped subcommand produces a clear error.
  • --no-color, NO_COLOR, and TERM=dumb apply to the help masthead and progress output; a shared terminal check lets elide init < /dev/null exit 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.exit codes are preserved on the inline-snippet path, and top-level -c snippets match CPython argv semantics.
  • Retired subcommand names fail gracefully.
  • Test discovery never descends into hidden directories, and a failing JavaScript test file prints its failure message.
  • Python zoneinfo resolves timezones; constructing any ZoneInfo previously 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 install no 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.
Changed
  • The jib, aube, uv, pro, and s3 subcommands are permanently retired, along with the telemetry, cloud, sidecar, and licensing subsystems; their documentation is removed across locales. python, javap, jdeps, javadoc, native-image, and manifest are unaffected.
  • Distributions no longer include duplicate or unreachable files.
  • Kotlin language and API level are now 2.4.
Maintenance
  • 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.
Added
  • elide test is now one test runner for every language: JavaScript and TypeScript tests are discovered with no configuration (no elide.pkl required) 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 lsp supports Java, with google-java-format integrated.
  • pom.xml is accepted as a foreign project manifest.
  • Elide's own CI now checks Java and Kotlin formatting with elide format.
  • The native-image argument vector is recorded beside image outputs.
Fixed
  • TypeScript entry metadata.
Changed
  • 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 elide process; opt in with SPAWN_PROCESS=false in native mode.
  • TextDecoder uses encoding_rs; URL setters work, XMLHttpRequest accepts data: URLs, and fetch() resolves relative URLs.
Maintenance
  • Dependency updates across ecosystems include upstream security fixes.
1.4.3 Fixes native-image build cache invalidation and makes native Windows builds work.
Fixed
  • Native-image task cache keys now fingerprint the contents of configuration inputs, so editing reachability metadata under -H:ConfigurationFileDirectories or 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 conf tree — including java.security — is packaged.
Changed
  • Windows builds work natively: the builder no longer forces container mode on Windows and prefers a resolved native binary, postinstall resolves elide from the PATH, 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.
Added
  • Java and Kotlin source files run directly with elide run.
  • elide run executes scripts declared in elide.pkl, package.json, and pyproject.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.
Fixed
  • 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: javac targeting prefers --release and falls back to the default release when unset, -parameters is 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, and process.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.
Changed
  • Build targets may be named without a prefix.
  • --no-cache also 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.
Added
  • node:net: TCP and Unix-domain sockets and servers with DNS resolution and Happy-Eyeballs dialing, plus BlockList and SocketAddress.
  • 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) and fork with a working IPC channel, controlled by new --allow-run / --deny-run sandbox 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.
Fixed
  • node:vm contexts now bind this and globalThis to the sandbox and hide the internal contextify marker; node:buffer populates buffer.constants and validates allocation sizes with coded errors; process.argv[1] and __filename resolve to the real script path.
  • Python: crash loading the time module, -m module 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.json parsing 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.
Changed
  • The linux-amd64 binary runs on older Linux distributions again.
1.4.0 Updates the runtime and adds a large set of JavaScript and Python compatibility fixes.
Added
  • 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 python subcommand with CPython-style flag compatibility.
Fixed
  • 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.
Changed
  • NPM platform packages now download the Elide binary during install instead of bundling very large tarballs.
Maintenance
  • 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.
Added
  • Packaged installer support around embedded aube for NPM and uv for 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 $262 host API support for Test262 tooling.
  • Web templates for elide init.
Fixed
  • The docs Examples button, by adding the backing code samples page.
  • elide run for spawned JVM processes that read from stdin.
  • MCP HTTP mode and high-level insight scripting behavior.
  • javaformat and ktfmt helper handling for @argfile arguments.
  • Several installer and snippet-runner issues.
  • Embedded javac compatibility with ambient CLASSPATH defaults 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.
Added
  • 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:fs and node:fs/promises support with a filesystem capability sandbox.
  • A docs "File an issue" action, with fixed mobile layout for page actions.
Fixed
  • Explicit elide kotlinc --plugins=<suite> selections now take precedence.
  • elide upgrade now 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/elide publishing into a dedicated, testable workflow.
Changed
  • Disabled telemetry, cloud, and sidecar by default behind optional Cargo features.
1.3.4 Centered on JVM build performance and Kotlin compiler correctness under persistent-worker use.
Added
  • Kotlin Build Tools API work for Elide JVM builds.
  • Pro i18n support.
Fixed
  • Kotlin incremental compilation behavior, with digest-driven invalidation, heap sizing, and classpath-default handling.
Maintenance
  • Cached warm javac classpath 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.
Added
  • Python interop, Python 3.12 alignment, and sys.argv fixes.
  • Native compression for gzip, Brotli, and Zstandard, replacing zstd-jni and brotli4j in the transport path.
  • NPM distribution infrastructure for Elide binary packages.
  • Publishing infrastructure for @elide-dev/types.
  • Roll-up behavior for excessive Kotlin compiler diagnostics.
Fixed
  • 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.
Added
  • The Elide masthead in elide info.
  • Channel and precise-version awareness to elide --version and elide info.
Fixed
  • Made elide upgrade channel-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 jdeps resource 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.
Added
  • elide jdeps.
  • node:crypto, Web Crypto digest behavior, and transparent tool passthrough.
  • Reference and guide docs for remaining runtime and tooling topics.
Fixed
  • 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.
Added
  • elide init template and metadata improvements, including inverted blocks, binary files, and conditional build/test/run invocation support.
Fixed
  • Installer script argument parsing and Unix executable permissions.
  • Native-image localization configuration for ICU.
  • Missing annotations for Java test compilations.
  • A build-time nanoTime value 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.

¿Te resultó útil esta página?