0.6.1 (2026-06-27)
0.6.0 (2026-06-26)
0.5.1 (2026-06-25)
0.5.0 (2026-06-25)
0.4.0 (2026-06-25)
0.3.0 (2026-06-25)
-
elide.usemodule-extension tag for bring-your-own Elide — test against a custom or local build without waiting for a release inversions.bzl. It takes precedence overelide.installin the root module:- Custom tarballs + hashes:
elide.use(version = "1.3.x-mybuild", url_template = "https://host/elide.{os}-{cpu}.{ext}", integrity = {"linux_amd64": "sha256-…"}).integrityis authoritative (noversions.bzlentry needed) and only its platforms get a toolchain; hashes are still enforced. - Local distribution:
elide.use(local_path = "/abs/path/to/elide")wires the host-platform toolchain straight from an already-extracted Elide dir with no download (build is then non-reproducible).
- Custom tarballs + hashes:
-
rules_kotlinKotlinBuilder interop viaregister_elide_kotlin_toolchain(load from@rules_elide//elide/kotlin:toolchain.bzl). Existingkt_jvm_library/kt_jvm_binary/kt_jvm_testtargets compile through Elide with no BUILD-file migration — only a toolchain swap inMODULE.bazel.- Plain Kotlin / mixed Kotlin+Java: compiled via
elide kotlinc(fast path). - KAPT / KSP (annotation processors): transparently delegated to the stock
rules_kotlinKotlinBuilder supplied asfallback_builder. - ABI jars produced via Elide's embedded
jvm-abi-genwhen the toolchain enablesexperimental_use_abi_jars. - Real
.jdepsoutput (Elide 1.3.2): the shim passes--report-used-deps(WHIPLASH #998, fixed via #1002/#1005) and classifies each classpath entry EXPLICIT/IMPLICIT/UNUSED, enablingunused_deps/ reduced-classpath. Falls back to an emptyDepsproto when there is no classpath to classify. - Compiler-plugin options (
--compiler_plugin_options) and the requested Kotlin--kotlin_{api,language}_versionare forwarded toelide kotlinc(-P plugin:…,-api-version,-language-version) — fixes optioned plugins such as Metro on the fast path (rules_elide #8). e2e/kotlin_builder/workspace exercises both the fast path (//:greeter) and the KAPT fallback path (//:annotated).
- Plain Kotlin / mixed Kotlin+Java: compiled via
-
Bzlmod-only Bazel rules for the Elide runtime.
elide_java_library,elide_java_binary,elide_java_testelide_kotlin_library,elide_kotlin_binary,elide_kotlin_testelide_native_imageelide_format(google-java-format for.java, ktfmt for.kt)elide_toolchain,ElideToolchainInfo,ElideInfo
-
Hermetic per-platform toolchain pulled from the Elide CDN (
https://elide.zip/artifacts/{channel}/{version}/...) viamodule_extension+installtag class with channel and version selection. -
In-tree SRI integrity table, semver-aware version comparator, full extracted distribution exposed as toolchain runfiles.
-
Bazel persistent worker support for the
elide javacandelide kotlinccompile actions: each is taggedsupports-workers+supports-multiplex-workerswith theprotoworker protocol, enabled by default. Per-request TOOL_ARGS are delivered via a multiline params-file WorkRequest (in the unifiedelide <tool> [opts] -- <args>form — Elide 1.3.1's worker accepts the--separator); Bazel injects the--persistent_workerstartup flag itself. Multiplex (one warm process serving concurrent requests) is verified working on 1.3.1 and lifts the singleplex--worker_max_instancesconcurrency cap. (Workers are otherwise roughly wall-clock-neutral for elide, a native image with ~12 ms startup — seebenchmarks/RESULTS.md.) -
elide javaccompiles in a single action via the--jaroption (elide javac --jar <out> -- <args>, Elide 1.3.1 #993), replacing the prior javac →elide jartwo-action flow. -
--@rules_elide//elide:use_workersbuild flag (defaulttrue) toggles the worker path. Setting itfalsecompiles each target as a one-shotelide <tool> -- <args>process — the same arg form the worker now uses. -
Kotlin compile pipeline supports
module_name,kotlinc_opts,javac_opts,plugins, andassociates(friend-paths forinternalvisibility). -
Compile rules emit complete
JavaInfo:output_jar, ijar-derivedcompile_jar(viajava_common.run_ijar), and packedsource_jars(viajava_common.pack_sources). -
JUnit Platform test launcher honouring Bazel's test runner contract (
TEST_TMPDIR,XML_OUTPUT_FILE,TEST_FILTER). -
Stardoc-generated reference docs under
docs/. -
e2e/smoke/standalone workspace with env-aware local elide override. -
GitHub Actions CI matrix (Bazel 7.x/8.x/9.x × ubuntu / macos) with SHA-pinned third-party actions, release workflow with SLSA attestations, BCR publish workflow, OpenSSF Scorecards.
-
.bcr/templates referencing thee2e/smokeconsumer module viabcr_test_module. -
.gitattributesexport-ignore for tests / e2e / tools / .github / .bcr. -
Cross-platform launcher emission:
.shon POSIX,.baton Windows, selected automatically via@platforms//os:windowsconstraint. -
Windows back in
PLATFORMSandELIDE_VERSIONS["latest"]. -
e2e/integration/standalone workspace exercising realelidetoolchain downloaded from the CDN; CI jobintegrationvalidates end-to-end on main pushes / scheduled runs. -
benchmarks/workspace +bench.shmeasuringrules_elideagainst canonicalrules_java/rules_kotlinon generated sources. Recorded results inbenchmarks/RESULTS.md. Weekly scheduled CI jobbenchmarksre-runs and uploads results as an artifact.
elide javacflow split into two actions:elide javac -- -d <classes> -classpath ... <srcs>writes class files, thenelide jar -- cf <output_jar> -C <classes> .packs them into the output JAR. Closes the read-only-sandbox failure mode that prevented any real Java compile.
srcjarsattribute (compile-time generated sources) not yet wired.latestCDN revision is a rolling pointer; integrity snapshot captured inversions.bzlmay drift when upstream advances.- Stable
releasechannel on the CDN is not yet populated upstream (seeplan.mdUP-2); consumers currently pin againstnightly/preview. rules_kotlinKotlinBuilder shim: the shim emits a real.jdepsbut does not itself enforcestrict_kotlin_deps(it leaves enforcement to the consumingrules_kotlinconfig, which reads the emitted dependency data). Windows workers not supported (POSIX launcher only).elide native-imagestill requires an external GraalVM viaJAVA_HOME(WHIPLASH #1016/#1042 not yet effective as of 1.3.3), so native-image targets aren't hermetic.