Guest Kotlin support

Compukters accepts Kotlin source through a pinned K2 frontend, then lowers it to Compukter bytecode for the managed Rust VM. This is Guest Kotlin, not Kotlin/JVM: K2 accepting source does not imply Java interoperability, JVM library compatibility, or executable support in Compukters.

The compiler process uses Kotlin compiler libraries internally, but those host dependencies are not visible to Guest source. Guest name resolution contains only the native declarations published by the selected Compukters platform modules. Their metadata, ordinary precompiled Kotlin bodies, and trusted external bindings form one versioned platform contract.

This matrix describes the repository revision that contains it.

Status legend

Every checked item names its evidence. Unchecked work links an exact tracking issue when scheduled; otherwise it says Tracking: not scheduled. Compiler acceptance alone is not execution evidence: a VM operation and a K2 construct must meet through conformance coverage before the construct is marked supported.

Entry points and projects

Types and numeric semantics

Expressions and control flow

Functions and calls

Classes and object model

Nullability and exceptions

Strings, arrays, and collections

Tasks and concurrency

Built-in Guest platform

The platform internally uses the following modules to build and verify its Guest Kotlin surface. They form one atomic built-in platform and are not selected individually in compukter.toml; there is no ambient Kotlin/JVM classpath.

Module Guest surface
kotlin:builtins Core language types, arrays, function types, and structural declarations required by K2
stdlib:core Small native core helpers such as require, supported array construction, and bounded cooperative Task / Tasks declarations
stdlib:ranges Declaration surface for IntRange, until, and rangeUntil; canonical unit-step Int loops lower without runtime range objects
std:terminal print, println, readln, stderr, and raw terminal operations
std:filesystem The bounded filesystem facade
compukter:compiler Guest compilation operations
compukter:process Child process execution and explicit exit
compukter:redstone Side-oriented redstone reads, waits, and weak/direct output writes
compukter:sound Bounded one-shot computer beeps with admission feedback
compukter:display Typed adjacent and named text-display writes and clearing

Ordinary functions in these modules are compiled ahead of Guest projects into relocatable platform fragments. Only declarations explicitly marked as native external bindings lower to host capability operations; a Guest declaration cannot become one merely by copying its package, name, and signature.

The built-in modules are packaged with the tooling workers. Addons instead register an AddonGuestApiBundle on the server. Its deterministic identity covers metadata, sources, capability schemas, and exact callable bindings. An attached IDE receives the admitted data from the server. Completion can propose APIs from available inactive addons and enable their addon IDs; diagnostics, parameter information, navigation, compilation, and cache invalidation then use the same selected API identity without adding the addon JAR to either worker’s JVM classpath. Evidence: CompletionQueryTest and IdeCompletionPlannerTest.

Kotlin standard library

Compukters Guest APIs

IDE and tooling

Intentional non-goals

Maintenance policy