Skip to content

PEX 1.0.0

Choose a tag to compare

@Conman1533 Conman1533 released this 15 Oct 23:52
74d1a6a

PEX 1.0 is the first stable release of PEX, an experimental fork of Pumpkin, the Minecraft Java Edition server written in Rust. It runs Minecraft 26.3 (protocol 777) and includes everything in upstream Pumpkin as of 14 October 2026, plus about 140 PEX changes focused on reliability, vanilla parity and resource use.

Built from commit 74d1a6a.

Performance

Measured with the open gameplay benchmark: the same world and the same bot players (builders, miners, AFK players and explorers, with farms running) on both servers, each with 4 CPU cores and 8 GB.

Against Paper 26.3 (JVM) Paper PEX 1.0
Tick time, 8 players 12.4 ms 6.3 ms
Tick time, 24 players 20.5 ms 12.0 ms
Busiest thread, 24 players 42% of a core 23%
Memory (average) 1,607 MiB 582 MiB
Startup 42 s 0.5 s

In a 2-hour run against upstream Pumpkin, PEX wrote 214 MiB to disk where Pumpkin wrote 13,352 MiB, for worlds of the same size.

Highlights

Storage and reliability

  • Region files are written like vanilla's RegionFile: only changed chunks are rewritten, in place, with zlib compression. That cuts disk writes by up to 98% and keeps worlds fully vanilla-compatible.
  • Keeps running when the disk is full, and keeps unsaved chunks instead of dropping them. Failed region writes are retried on every save and their sectors freed.
  • Corrupt or truncated region data (a cut-off chunk header, a chunk too big for the header) is refused with an error instead of panicking or corrupting the file.
  • Block entities (chests, hoppers, furnaces) are saved before stop unloads their chunks.
  • Loads worlds saved by vanilla 26.3.
  • Overdue scheduled ticks run when an inactive chunk becomes active again.

Performance

  • Entity lookups use vanilla's per-section entity storage, and the entity tracker and natural-spawn mob counts run in parallel.
  • Smaller memory footprint: compact palettes for small block palettes, uniform light sections without arrays, no preallocated pathfinding heaps. On the glibc builds, freed memory is returned to the OS once a minute.
  • zlib via zlib-rs for chunk storage and network compression.
  • Optional per-tick and per-minute metrics, configured in pumpkin.toml.

Gameplay parity with vanilla

  • Mobs: vanilla despawning, peaceful-mode discarding, fish and squid swimming, suffocation only in blocks vanilla suffocates in, leads dropped on death and kept across chunk reloads, skeleton weapon goals, chicken eggs laid at the chicken.
  • Fishing: a complete fishing bobber (throwing, hooking blocks, mobs and players, bites, catches and events).
  • Hoppers: eject in the direction they face after a reload, correct cooldown chaining, whole-stack pickup.
  • Items and inventories: bundles (merging, weights, clicks, quick move), consumable items consumed only when their use ends, recipe book placement limits, off-hand pickup merging, chest boat inventories that save their contents and loot table.
  • Blocks: big dripleaf, sea pickles, crops and stems, sugar cane, farmland trampling, scaffolding, banners on walls, snow and fire updates, observer timing.
  • Merchants: the out-of-stock flag on offers is applied.

Packaging

  • Default MOTD "PEX, an experimental fork of Pumpkin", and "Pumpkin Experimental" in the F3 screen.
  • A Pelican/Pterodactyl egg (egg-pex.json).

Downloads

File Platform
pumpkin-X64-Linux Linux x86-64, glibc 2.35+ (Ubuntu 22.04+, Debian 12+). Built from the same code as the benchmarked build.
pumpkin-X64-Linux-musl Linux x86-64, static: runs on any distribution, including Alpine
pumpkin-ARM64-Linux Linux ARM64, glibc 2.35+ (Raspberry Pi OS 12+, Ubuntu 22.04+ on ARM)
pumpkin-X64-Windows.exe Windows 10/11 x86-64

SHA256SUMS lists the checksums. All four were built with full release optimisation (fat LTO). The x86-64 builds were run and tested before release. The ARM64 and Windows builds were cross-compiled and their dependencies checked, but they weren't run on real hardware for this release. macOS, Android, ARM64 Windows and ARM64 musl builds will follow from the nightly workflow.

Compatibility

  • From Pumpkin: drop the binary in place. Existing worlds and pumpkin.toml work. Missing settings are added with their defaults. Chunks Pumpkin saved with LZ4 are rewritten with zlib the next time they're saved.
  • From vanilla or Paper: worlds load as they are, and PEX saves them in the vanilla format.
  • Plugins: Pumpkin plugins work as they do on Pumpkin. Bukkit, Paper, Fabric and Forge plugins are not supported.

Known issues

  • PEX sends about 45% more network data to players than Paper under the same load.
  • PEX's slowest ticks (95th percentile) are about as slow as Paper's, even though its average tick is half as long.
  • At some building spots, block placements are occasionally rejected for a minute or more.
  • The embedded GameTest pumpkin:summon_command_regression can't run: its structure file fails to load ("Palette entry 0 is missing 'Name'").
  • forceload doesn't load chunks unless a player is near them.