Ktor 2.3.9 Help

Native server

Ktor supports Kotlin/Native and allows you to run a server without an additional runtime or virtual machine. Currently, running a Ktor server under Kotlin/Native has the following limitations:

Add dependencies

Ktor server in a Kotlin/Native project requires at least two dependencies: a ktor-server-core dependency and an engine dependency (CIO). The code snippet below shows how to add dependencies to the nativeMain source set in the build.gradle.kts file:

sourceSets { val nativeMain by getting { dependencies { implementation("io.ktor:ktor-server-core:$ktor_version") implementation("io.ktor:ktor-server-cio:$ktor_version") } } }

To test a Native server, add the ktor-server-test-host artifact to the nativeTest source set:

sourceSets { val nativeTest by getting { dependencies { implementation(kotlin("test")) implementation("io.ktor:ktor-server-test-host:$ktor_version") } } }

Configure native targets

Specify the required native targets and declare a native binary using the binaries property:

val hostOs = System.getProperty("os.name") val arch = System.getProperty("os.arch") val nativeTarget = when { hostOs == "Mac OS X" && arch == "x86_64" -> macosX64("native") hostOs == "Mac OS X" && arch == "aarch64" -> macosArm64("native") hostOs == "Linux" -> linuxX64("native") // Other supported targets are listed here: https://ktor.io/docs/native-server.html#targets else -> throw GradleException("Host OS is not supported in Kotlin/Native.") } nativeTarget.apply { binaries { executable { entryPoint = "main" } } }

You can find the full example here: embedded-server-native.

Create a server

After configuring your Gradle build script, you can create a Ktor server as described here: Creating a server.

Last modified: 19 April 2023