About Compukters
Compukters is an in-game programming platform built around Kotlin .kt projects, an integrated IDE, versioned
Compukter bytecode and a managed Rust VM. Compile and deploy programs, read redstone, write displays and use optional
Create, Sable and Propulsion addons.
These pages describe the current development checkout. Consult the changelog for the features included in a published release.
Status
The compiler, canonical artifact, JDK 25 FFM session, managed Rust VM, standalone
playground, loader-independent ProgramRuntimeHost, and server computer block
form an executable vertical slice. A computer starts the source-visible no-std
system/programs/boot.kt from /rom/boot; boot launches /rom/shell, and the
shell can run verified extensionless programs in the foreground through
Process.run. The ordinary /rom/kotlinc program compiles one .kt source
from /home into an extensionless executable, using a server-global persistent
cache and an isolated K2 child process without blocking the server tick.
NeoForge GameTests cover registration, automatic boot, two computers compiling
and executing the same source, nested program execution, reboot, ticking,
removal, VM shutdown, and recovery of a tombstoned persistent filesystem.
The primary game target is Minecraft 26.1.2, built against NeoForge 26.1.2.112, with JDK 25 and the FFM runtime. The compatibility target is Minecraft 1.21.1, built against NeoForge 21.1.252, with Java 21 and the JNI runtime. Mod metadata admits NeoForge starting at 26.1.2.97 and 21.1.250, respectively; these lower bounds are distinct from the pinned build versions. The 26.1.2 production archive uses Minecraft’s official names directly; the 1.21.1 archive is remapped during packaging. Neither archive requires Architectury at runtime.
Runtime boundary
host/compukter-vm is the pinned
Compukter VM submodule.
Kotlin compiler internals remain on the trusted JVM side; immutable verified
Compukter artifacts cross into the Rust runtime, which owns execution, quotas,
managed memory, scheduling, and host-neutral sessions.
The Rust runtime also owns each computer’s filesystem. Minecraft persists only
a stable ComputerId; the immutable packaged /rom and isolated persistent
/home are mounted inside Rust. World data is rooted at
<world>/compukters/filesystems, flushed on saves and shutdown, and moved to a
recoverable tombstone when a player destroys the corresponding computer. Guest
code has bounded FileSystem.stat, FileSystem.list, FileSystem.readText and FileSystem.writeText
operations. Compilation is requested by the Rust machine from an immutable
source snapshot. The JVM service compiles or retrieves a verified artifact from
<world>/compukters/compiler-cache, then Rust re-verifies and atomically
installs it into the requesting computer’s /home.
Inside a computer, compile and run a program with:
kotlinc hello.kt
hello
Without -o, the output name is the source filename without .kt. An explicit
extensionless output is also supported:
kotlinc hello.kt -o app
app
The current in-game compiler accepts exactly one source file per invocation. Compiler failures leave an existing output untouched and are reported back in the shell.
Licenses and source
Original software and source material use Apache-2.0. Media has a separate license inventory; third-party notices and name/logo usage remain in the repository. Earlier releases retain the licenses that accompanied them.