openfaas / store

Official Function and Template Store for OpenFaaS
MIT License
163 stars 56 forks source link

Submission Request - Kotlin Native Linux x64 Template #110

Open napperley opened 5 years ago

napperley commented 5 years ago

There is no Kotlin Native Linux x64 template in the store despite the fact that a template exists. Kotlin has significantly grown in backend development to the point where it makes sense to include a Kotlin Native Linux x64 template in the store.

Proposed Solution

I propose using the existing template as the one to use in the store but with some modifications. Will require updating the Kotlin version used to match the latest Kotlin stable version (Kotlin Native uses the Kotlin versioning scheme). Starting with Kotlin 1.3 program arguments are now optional therefore fun main(args: Array<String>) can be shortened to fun main().

Considering that the Kotlin Native runtime is currently in flux with concurrency it would be best to use the classic OpenFaaS Watchdog. Kotlin Native has a dependency on the GCC standard library which means Alpine Linux cannot be used as the container OS, therefore Debian will be used instead.

Since KotlinConf 2019 is over a week away (from the 4th to the 6th of December) it would make sense to see what announcements are being made, especially around Kotlin backend development and Kotlin Native. It might be possible that the Kotlin 1.4 release might provide some benefits where it is better to skip using Kotlin 1.3 for the template.

napperley commented 4 years ago

In consideration of the announcements made at KotlinConf 2019 I have decided that Kotlin 1.3 will be used for the template since it would be trivial to update the template when Kotlin 1.4 is released. The main benefits for using Kotlin 1.4 is the faster compilation speed and improved performance, which isn't beneficial enough to use Kotlin 1.4 (not released yet) over Kotlin 1.3 (is already released). Also Kotlin 1.4 is focused on quality rather than features unlike Kotlin 1.3. This means a complete overhaul of the compiler to provide better compilation performance and lower maintenance, a unified library format (KLib), and improved Kotlin Native runtime performance.