The Kotlin 1.4 release is a major milestone in the evolution of Kotlin as a platform. A lot of this release is behind the scenes. Stabilizing and improving the platform itself, as well as moving forward the common compiler efforts that have been in the works for quite a while.
Just this week, in fact, Jetpack Compose was released to Alpha. Prior to 1.4, running Compose meant running a custom version of Kotlin because it relies on the new compiler. That is all beginning to come together.
Join our live Touchlab Share video chat Friday where we talk about the changes coming in 1.4 for KMP and KMM!
On the native front, there are a number of things that have already been included in late 1.3.x releases, and a bunch of new stuff coming in the near future. As always, though, a new Kotlin version means re-deploying native libraries! As 1.4 is the first major Kotlin release in the KMP and native era, upgrading each individual library took a little more effort than usual. Today, we’ve wrapped up that process for the Touchlab-related libraries.
Our flagship sample project, KaMP Kit is the best place to get started with KMP mobile development. We’ve included pretty much every library we use in production KMP app development, along with a small sample of our architectural best practices.
Special Ktor Note: Previous versions of Ktor and Multithreaded coroutines had an incompatibility, which has been fixed in 1.4.0. We’ll be posting an update shortly.
Shared multiplatform db library. We’ve updated the native driver, SQLiter, and some other internals. There are some significant updates to the native side of all of this coming soon which should increase performance. We also have a blog post about SQLCipher, and some updated sample code coming soon.
Along with updates to 1.4, we’re planning some internal updates to the iso-state library. The concurrency model is changing in the future, but until then you still need to navigate it. Stately will help.
Kermit (the log) is our KMP logging library. There are a number of KMP logging implementations, but we wanted to put our own spin on it in certain places.
Symbolicated crash reporting for Apple-based native code. We’ve been gaining some real-world experience with this project. Time permitting, now that the Crashlytics client is open source, we may be able to better integrate with it. Also, some clients use crash reporters that aren’t yet supported, so those may appear soon…
Recent changes include an improved install experience. We originally had a fork of the Kotlin/Native lldb formatting script, but now that there’s been kind of a merge of optimizations, we’re moving to use the “official” Kotlin/Native version. This project will get updates over the next few weeks.
This is a fork of the official Kotlin Cocoapods plugin. The official plugin is inside the full Kotlin project, which is huge, so making changes is pretty difficult. For that reason we decided to fork it. The major difference is our plugin allows for more direct configuration of the Framework binary.
The original reason was to enable dynamic Xcode frameworks. The official plugin hard-codes them as static. Originally, debugging in Xcode didn’t work with static frameworks. Now that appears to be resolved, so we’ll be focused on static frameworks. However, we still want more direct control over framework configuration, so we will continue to support this project.
Speaking of frameworks, we’ve compiled a whole lot of data on the impact on Kotlin/Native on your iOS binary sizes. Keep an eye on our publishing pipeline for that soon.
We’re also doing research on multiple frameworks, build system integrations, CI setup, and a bunch of other topics related to how you actually use this stuff in production. Content around that will appear over the next few months.
We’re going to be setting up content for Droidcon again this year, although instead of NYC, it’ll be virtual, and cover all of the Americas! I’ll personally make sure there’s a ton of great KMP content again. Go get tickets and/or submit to the CFP!
The ecosystem around KMP is growing and maturing. It’s an exciting time to get involved. We’ve started multiple new KMP projects that will be launching in the near future, and look forward to doing more as the year goes on. Please reach out if you’d like to chat about KMP and what Touchlab can do for you!