Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions docs/blog/2026-06-25-endive-1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
slug: endive-1.0
title: 'Endive 1.0: WebAssembly on the JVM, Now a Bytecode Alliance Project'
authors: [andreaTP]
tags: [wasm, endive, release]
---

We're excited to announce **Endive 1.0**, the first release of the project under the [Bytecode Alliance](https://bytecodealliance.org/). Endive is a pure-Java WebAssembly runtime with zero native dependencies, continuing the work started as Chicory. For background on the move, see the [announcement article](https://bytecodealliance.org/articles/endive-and-the-next-chapter-of-webassembly-on-the-jvm). If you're migrating from Chicory, the [migration guide](/docs/migration/from-chicory) has you covered.

<!-- truncate -->

## WasmGC Host Integration

Endive 1.0 redesigns how WasmGC objects are handled when they cross the boundary between Wasm and Java. Structs, arrays, and `externref` values that flow across the host boundary are now managed by the JVM garbage collector directly, instead of living in a separate store with manual lifecycle management. This makes WasmGC on the JVM feel native: GC objects behave like any other Java object.

The annotation processor now supports `externref` as plain `Object`, so host functions work naturally with GC types without extra wiring.

**If you pass WasmGC types across the host boundary, your code may need a small update.** The runtime surfaces clear warnings to guide you through the change. See [#55](https://github.com/bytecodealliance/endive/pull/55) for details.

## Tail Call Optimizations

Community-contributed fixes have improved tail call correctness, and the compiler now optimizes tail-call dispatch by eliminating unnecessary stack frame allocation. CPython 3.14, which adopted tail calls in its interpreter loop, is the main beneficiary.

## Migrating from Chicory

For most users, migrating is a find-and-replace. Maven coordinates move from `com.dylibso.chicory` to `run.endive`, Java packages move from `com.dylibso.chicory.*` to `run.endive.*`, and two exception classes have been renamed (`ChicoryException` to `WasmEngineException`, `ChicoryInterruptedException` to `WasmInterruptedException`). The [migration guide](/docs/migration/from-chicory) covers the full list, including Maven plugin goals, system properties, and CLI binary names.

If you use WasmGC types at the host boundary, see the section above.

## What's Ahead

Community members have already started prototyping Component Model support at [endive-cm](https://github.com/roastedroot/endive-cm). Anyone interested is welcome to contribute. Follow [#52](https://github.com/bytecodealliance/endive/issues/52) for updates. Cranelift-based native compilation is also in the works, bringing near-native execution speed while preserving the pure-Java packaging experience.

## Acknowledgements

We'd like to thank [Dylibso](https://dylibso.com/) for creating [Chicory](https://github.com/dylibso/chicory), incubating the project through its early years, and building the community that made this transition possible.

Thank you to every contributor who has shipped code, reported bugs, tested pre-releases, and pushed WebAssembly forward on the JVM. The [adopters list](https://github.com/bytecodealliance/endive/blob/main/ADOPTERS.md), from JRuby to Trino, from Bazel to Apache Camel, is the best evidence that this runtime is solving real problems.

## Getting Started

```xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>run.endive</groupId>
<artifactId>bom</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependency>
<groupId>run.endive</groupId>
<artifactId>runtime</artifactId>
</dependency>
```

[Documentation](https://endive.run/docs/) | [GitHub](https://github.com/bytecodealliance/endive)

We'd love to hear what you're building. [Join the conversation on Zulip](https://bytecodealliance.zulipchat.com/#narrow/stream/endive) and let us know how it goes.
Loading