Entry points and projects

← Guest Kotlin support

This page describes the current checkout, including unreleased work. Status and evidence policy applies to every entry.

main(args: Array<String>) argument contract

Status: Supported.

The argument-bearing entry point receives one owned array whose strings preserve their exact UTF-16 code units.

Evidence: MinimalScriptLoweringTest, test string array entry lowers deterministically for vm argv conformance, and kotlin_writer.rs, test k2_string_array_entry_executes_exact_utf16_arguments.

Status: Supported.

fun main() and fun main(args: Array<String>) lower with explicit entry tags.

Evidence: MinimalScriptLoweringTest, test both legal main forms lower deterministically with an explicit entry contract.

Invalid entry points are rejected

Status: Supported.

Duplicate entries, missing entries, unsupported parameters, nullable argument arrays, and non-Unit results produce no artifact.

Evidence: MinimalScriptLoweringTest, tests entry policy rejects duplicate and invalid main functions and entry policy rejects a project without main.

Malformed source is rejected

Status: Supported.

PSI syntax errors, including a truncated function or nested block that FIR could recover, produce syntax diagnostics with virtual paths and UTF-16 offsets. No IR or executable artifact is published.

Evidence: K2CompilerAdapterTest, test syntax and type diagnostics use virtual paths and UTF-16 offsets.

Multi-file projects

Status: Partial.

Cross-file top-level calls share one K2 session and lower deterministically, while the in-computer kotlinc command still accepts exactly one source file.

Evidence: K2CompilerAdapterTest, test cross-file reference participates in one K2 session before bounded lowering, and MinimalScriptLoweringTest, tests multi-file terminal program lowers through trusted symbols and kotlinc command line rejects ambiguous or unsupported arguments.

Related work: not scheduled

Project manifests and modules

Status: Partial.

compukter.toml selects a portable native platform module graph by identity, while compukter.lock records exact resolved versions and hashes for the IDE, analyzer, and compiler. Compiler output is still one application artifact rather than an independently distributable Kotlin module ecosystem.

Related work: not scheduled