[00:00.000 --> 00:26.000] Thank you for joining us today and let's start with a brief intro, probably, of our speakers. [00:26.000 --> 00:36.000] All right, thank you. Thank you all for being here. I'm Marco and I'm Kotlin GDE based in Berlin. [00:36.000 --> 00:42.000] I'm Italian and today I'm here talking about Kotlin. [00:42.000 --> 00:54.000] Same here. I'm Sergey. I'll be talking about Kotlin as well and we were asked to get you the state of Kotlin, whatever it means. [00:54.000 --> 01:02.000] I worked for various companies in Kotlin for about seven years now, I guess, such a long time. [01:02.000 --> 01:09.000] Early years with the backends in Kotlin now mainly in Android development and infra. [01:09.000 --> 01:13.000] But let's start with important things. [01:13.000 --> 01:23.000] We live in a modern time with modern technologies available and so this presentation is powered by generative AI. [01:23.000 --> 01:34.000] It's really important to remember that the speakers today, both of us, are not anyhow affiliated with any companies that create Kotlin [01:34.000 --> 01:44.000] or sponsor it or anything like this. It will be pure, our opinion based on our experience or guesses, I don't know. [01:44.000 --> 01:51.000] We might be wrong except for the places when we are right. That's it for today. [01:51.000 --> 02:01.000] And generative AI make a thing that probably the speaking these days will be an easy job. [02:01.000 --> 02:12.000] Last year, preparing for the FOSDOM talk, I've been writing my videos about 3 a.m. before the deadline. [02:12.000 --> 02:22.000] Nicola was already saying why you're not sending me the videos and I had to do and this year I thought, all right, I'm using the modern technologies [02:22.000 --> 02:30.000] and ask chatGPT to generate the slides for me. Unfortunately, we ended up in like 5 to 10 minutes saying, [02:30.000 --> 02:35.000] oh, I have no idea what is Kotlin because I don't have data after 2021 probably. [02:35.000 --> 02:46.000] So the rest of the presentation is really not powered by the generative AI. I'm sorry for this. So it's powered by us. [02:46.000 --> 02:52.000] And we had to figure out what is Kotlin and what is the current state. [02:52.000 --> 03:01.000] So probably the first reasonable thing thinking about this is to get and try to understand any of the developer service available. [03:01.000 --> 03:12.000] And one of the most interesting one in this domain is the JetBrains developer survey that they run, I guess, every year from 2019 or 2020-ish. [03:12.000 --> 03:20.000] So here is the data available on the end of 2022. [03:20.000 --> 03:32.000] And we can see definitely a domination of mobile development in Kotlin and presumably it's Android mobile development, I guess so. [03:32.000 --> 03:44.000] And another leading stream is the web or backend development which is rising and like 40% of all Kotlin engineers are working with backends. [03:44.000 --> 04:01.000] I must admit that at the end of like 2022, the majority of population is still in mobile, the backend is rising and backend is trending up. [04:01.000 --> 04:09.000] I was under impression like a year ago that, hey, Android is probably the only platform for Kotlin. [04:09.000 --> 04:21.000] However, I was like reasonably biased with this and the first time after COVID when I arrived to one of the European conferences that had a few topics there, [04:21.000 --> 04:29.000] I was impressed that the majority of topics were with backends. [04:29.000 --> 04:44.000] But today let's try to avoid getting too deep into particular Kotlin platforms and focus more on like high-level language stuff, what is coming in the next years, or at least what we can probably predict to come. [04:44.000 --> 04:56.000] It's quite funny that it's possible to describe the whole 2022 and 2023 agenda in the Kotlin world with just five letters. [04:56.000 --> 04:59.000] And one is common in both of the words. [04:59.000 --> 05:05.000] It's K2, the new Kotlin compiler that's coming, and the Kotlin Multiplatform or KMP. [05:05.000 --> 05:16.000] So I'm not very surprised that in the past year we didn't see a lot of Kotlin language features and there are a few reasons for this. [05:16.000 --> 05:25.000] And we'll definitely discuss them in the next slides and further in this talk. [05:25.000 --> 05:38.000] But let's try to first understand what is K2 and what is what it's preparing for us as developers and product owners or engineers. [05:38.000 --> 05:44.000] And then we'll get to KMP later in this presentation. [05:44.000 --> 05:51.000] First of all, there are a few major problems in the whole Kotlin infrastructure. [05:51.000 --> 05:56.000] And they are the stability and performance of the ID. [05:56.000 --> 06:10.000] So even though probably IntelliJ is one of the greatest product on the market for developers, it's not great for Kotlin. [06:10.000 --> 06:20.000] I mean, it's fine, but whenever your project is growing and growing and growing, and I know something about large project in the industry, it's getting unusable. [06:20.000 --> 06:24.000] The second thing is build speed. [06:24.000 --> 06:35.000] Like whenever you tried probably Java for its builds before, even if Java is slow, but overall Kotlin is significantly slower. [06:35.000 --> 06:46.000] And this is like a drawback, especially if you came from the legacy code base whenever you had like five or 10 years of previously Java code. [06:46.000 --> 06:53.000] Yeah, I know, I know, I tried to say we are not getting deeper into the platforms, but it is what it is. [06:53.000 --> 06:58.000] And the build setup overall is quite complicated. [06:58.000 --> 07:05.000] So for example, Kotlin multiplatform, how to run Kotlin multiplatforms from the common line. [07:05.000 --> 07:14.000] If you can give me an answer, I will just take you out for dinner probably. [07:14.000 --> 07:23.000] And currently the overall K2 is developing in the two major Kotlin roadmap milestones. [07:23.000 --> 07:29.000] Like whenever you're interested was going on in Kotlin, you can get to the Kotlin roadmap. [07:29.000 --> 07:32.000] Thanks a lot for publishing it to JetBrains. [07:32.000 --> 07:35.000] It's like magic. [07:35.000 --> 07:40.000] There are two key things like getting K2 to better. [07:40.000 --> 07:45.000] Kotlin is currently in alpha and it's the whole rewrite of the compiler front end. [07:45.000 --> 07:52.000] Meaning that if you previously hacked something for the compiler plugins or compiler infrastructure, [07:52.000 --> 07:58.000] or you're an owner of the libraries like KSP or KAPT, [07:58.000 --> 08:04.000] you basically have to redo everything you did in the past three, five years. [08:04.000 --> 08:14.000] The second part is the IntelliJ-based plugin and the story there is the compiler and the compiler front end [08:14.000 --> 08:24.000] especially is very coupled with whatever Android Studio or IntelliJ IDEA or your IDEA of choice is doing with the language. [08:24.000 --> 08:38.000] Whether it's a language server or the index you have locally, your compiler performance really impact the experience you have in the IDE. [08:38.000 --> 08:44.000] Let's get to the other things. [08:44.000 --> 08:53.000] Like the unfortunate is the deprioritization of the API for compiler plugins. [08:53.000 --> 08:58.000] It means that for all of the engineers outside of JetBrains, [08:58.000 --> 09:06.000] it will be still very hard to create tools for a compiler for IDE and evolve them over time. [09:06.000 --> 09:13.000] Currently, you don't have a stable and you don't have basically a documented API for the compiler. [09:13.000 --> 09:24.000] For example, if you're creating a library that changes something, every major or even minor release of Kotlin, [09:24.000 --> 09:42.000] you need to upgrade it and evolve and maintain the compatibility of the version for the compiler. [09:42.000 --> 09:55.000] Currently, K2 is in alpha, but as far as we understand, the Kotlin 1.9 is about to get us K2 in beta. [09:55.000 --> 10:09.000] For the current numbers, we have the improvement at around a rate of 2x for all the build that JetBrains provided us in their benchmarks [10:09.000 --> 10:13.000] and publicly told us about these things. [10:13.000 --> 10:17.000] Kotlin itself has been building significantly faster. [10:17.000 --> 10:27.000] But if you're impatient, there is the way to bring at least some of the improvements for the build speed earlier in the pipe. [10:27.000 --> 10:36.000] You can get to Kotlin 1.7 something and it has probably 10 to 15% improvement in the build speed. [10:36.000 --> 10:46.000] You can even experience this in the large-scale code bases. [10:46.000 --> 10:56.000] There are a few plans about the K2 going to beta and mainly what JetBrains and Kotlin wants to achieve. [10:56.000 --> 11:04.000] It's the full functional compiler and it should work for the whole ecosystem, not only the JVM. [11:04.000 --> 11:09.000] It's probably usable for JVM even right now, I tried it. [11:09.000 --> 11:15.000] It's not a great experience, but you can experiment at least with it. [11:15.000 --> 11:28.000] There is a need for improvement in various plugins like Kotlin annotation processor, serializable, KSP and others. [11:28.000 --> 11:33.000] It will take time. [11:33.000 --> 11:41.000] As of yesterday, there is a well-done support for Kotlin X serialization. [11:41.000 --> 11:45.000] All open, no arc plugins and Lombok. [11:45.000 --> 11:50.000] It's already in the source code of Kotlin compiler. [11:50.000 --> 11:58.000] I'm not sure which version they're targeting, so I was checking 1.9 daily build and it was fine there. [11:58.000 --> 12:04.000] Probably there is something in 1.721, but I'm not quite sure. [12:04.000 --> 12:12.000] Unfortunately, KAPT is still not working, so you cannot do any of the annotation processing yet. [12:12.000 --> 12:22.000] KSP, the symbol processing, the future of annotation processing for Kotlin also doesn't work. [12:22.000 --> 12:28.000] Let's get into some details of the annotation processor support. [12:28.000 --> 12:39.000] Luckily in Utrecht, there are tickets for almost everything that works or that doesn't work and what JetBrains is planning to work on. [12:39.000 --> 12:45.000] There is a ticket for front-end IR support for KAPT. [12:45.000 --> 12:51.000] It's still in progress. It should be done in 1.9, or at least it's the current version now. [12:51.000 --> 12:59.000] I tried to understand what doesn't work right now, and it got me to quite interesting things. [12:59.000 --> 13:06.000] That KAPT currently doesn't support language version 2.0. [13:06.000 --> 13:12.000] Please use language version 1.9 or below. It's just a source code that I saw yesterday. [13:12.000 --> 13:22.000] I tried to get deeper so that there is a Kotlin version introduced that has symbols both 2.0. [13:22.000 --> 13:29.000] I probably don't want to make any judgment here what the version would be, [13:29.000 --> 13:37.000] but there are some things that suggest that we are going to have some major changes in the future. [13:37.000 --> 13:46.000] Kotlin symbol processing is another thing that doesn't work currently, but it's expected to get around 1.9. [13:46.000 --> 13:58.000] There is some work going on in the domain in the Google repository for KSP, but still nothing there done. [13:58.000 --> 14:10.000] The testing info doesn't work at all currently, so one of the major libraries for the compile testing doesn't support K2. [14:10.000 --> 14:17.000] I don't know when the support will come there. There is a poor request getting this support, at least partially, [14:17.000 --> 14:23.000] but who knows, probably will take another six to eight months. [14:23.000 --> 14:31.000] Finally, the IDE support for K2. [14:31.000 --> 14:39.000] As far as I understand, the plan is to create the K2-based IDE plugin [14:39.000 --> 14:48.000] that will probably start from a quite lightweight one that will support only a few things. [14:48.000 --> 15:01.000] It should have the performance that is targeted to be. Everything works fast and correct and likely stable. [15:01.000 --> 15:11.000] The IDE plugin will have a lower number of features, will be lightweight and will be released [15:11.000 --> 15:24.000] likely after the better or stable of the compiler, so it's not earlier than Kotlin 1.9, probably even later. [15:24.000 --> 15:31.000] As stated currently, it should have all the code highlighting. [15:31.000 --> 15:41.000] It should have basic code completion, like nothing fancy, probably just the stuff you use on a regular basis, [15:41.000 --> 15:44.000] but not for major refactoring or anything else. [15:44.000 --> 15:53.000] In debugger, there should be breakpoints and some simple stuff, really simple stuff, as it's declared, [15:53.000 --> 15:58.000] and there should be a limited number of diagnostics. [15:58.000 --> 16:08.000] The last but not the least thing, as you might notice, another big part is the Kotlin multiplatform support. [16:08.000 --> 16:23.000] This new lightweight plugin is aiming to have the full-featured Kotlin multiplatform support as well. [16:23.000 --> 16:37.000] That's my third. After some key to magic, let's try to check what went through this year of Kotlin multiplatform [16:37.000 --> 16:41.000] and what will come in the future. [16:41.000 --> 16:47.000] Let's start our journey from Kotlin 1.6.20. [16:47.000 --> 16:55.000] The first magic things, beautiful things that we saw, was the Ierco project structure becoming default. [16:55.000 --> 17:06.000] This thing was such a bless, because you finally don't need anymore to do some weird magic stuff like symbolic links and things [17:06.000 --> 17:19.000] to cover multiple architecture like iOS version and Intel version and X64 version. [17:19.000 --> 17:27.000] You get automatically shared stuff and you can just use an intermediate target for the thing, [17:27.000 --> 17:31.000] which was really a good thing to start with. [17:31.000 --> 17:39.000] But it wasn't the only thing in 6.20, because we got some improvements on Kotlin native [17:39.000 --> 17:44.000] and we got all the improvements that, as an engineer, you can dream of. [17:44.000 --> 17:49.000] So runtime, compile time and code size. [17:49.000 --> 18:00.000] It was an interesting update that brought many improvements on the developer experience, which was really nice. [18:00.000 --> 18:10.000] But the very big thing came later in 1.7.20, which was finally the new memory manager for Kotlin. [18:10.000 --> 18:19.000] With that version, it's now enabled by default and basically it's again a huge win in terms of developer experience [18:19.000 --> 18:25.000] because a lot of change changed and we got better stuff. [18:25.000 --> 18:37.000] That's because the memory manager changed from reference counting garbage collection to tracing garbage collection [18:37.000 --> 18:43.000] because in the past it was just made it quick and dirty. [18:43.000 --> 18:50.000] Let's put it in a way to just get out, but now that things are getting bigger and people are using it, [18:50.000 --> 18:55.000] they realize that some stuff was not the best choice afterwards. [18:55.000 --> 19:05.000] So what this means in reality is that there are no more restrictions on sharing objects between threads. [19:05.000 --> 19:13.000] There are more leak-free primitives, which means no leaks on the internals, [19:13.000 --> 19:19.000] but maybe leaks on stuff that you wrote because we can introduce bad things, [19:19.000 --> 19:25.000] but at least the tooling is not sneaking leaks. [19:25.000 --> 19:29.000] What does it mean at the end of the day for developers? [19:29.000 --> 19:33.000] It means that no more freezing. [19:33.000 --> 19:38.000] Finally, we get all the beautiful sun because we don't need to freeze objects anymore. [19:38.000 --> 19:49.000] We are really free to use everything and you just don't have to think anymore on free stuff [19:49.000 --> 19:59.000] and to understand that it's not crashing, that there's no mobility and stuff, so all magic now. [19:59.000 --> 20:09.000] This thing enables a bigger thing, which is the finally cutting-mode platform mobile, [20:09.000 --> 20:16.000] the mobile part, to reach the beta version, which is a huge milestone. [20:16.000 --> 20:26.000] This means that the technology is basically done and it is safe to use in your project. [20:26.000 --> 20:33.000] The fact that it's in beta means that there's still some work to do mostly on the toolchain, [20:33.000 --> 20:41.000] but in the general thinking you can use it safely. [20:41.000 --> 20:45.000] Maybe there will be some cut-out corners on setting up the toolchain, stuff like that, [20:45.000 --> 20:55.000] but don't worry, you can start using and learning your project and do it because it's fun. [20:55.000 --> 21:10.000] All right, now let's move to more close to today and with the recent release of Kotlin 1.8, [21:10.000 --> 21:19.000] we got a lot more interesting stuff in the field of Objective-C as with interoperability, [21:19.000 --> 21:27.000] which is something that people always ask because it could be better sometimes. [21:27.000 --> 21:35.000] With this release, we got some nice annotations like Objective-C name [21:35.000 --> 21:43.000] that let us specify a more idiomatic or more beautiful naming for some function [21:43.000 --> 21:53.000] that we want to expose to Swift so we can just change the name without changing the Kotlin object itself. [21:53.000 --> 22:08.000] Another one is hidden from Objective-C, which as the name suggests, we can hide some function from Objective-C [22:08.000 --> 22:14.000] because maybe we want to have a duplicated function that works better [22:14.000 --> 22:22.000] or has a better representation for the Swift word and we want to just hide the Kotlin one [22:22.000 --> 22:31.000] so we can save precious binary size and have a specific function only for the iOS part. [22:31.000 --> 22:39.000] Finally, another interesting thing is the should refine in Swift annotation, [22:39.000 --> 22:48.000] which basically tells the compiler to mark a function or a property as a Swift private. [22:48.000 --> 22:54.000] Basically, it's going to be exported on Objective-C with a double underscore [22:54.000 --> 23:05.000] and so with a double underscore, this function will be invisible because autosuggestion doesn't autosuggest. [23:05.000 --> 23:12.000] On iOS, sometimes stuff are invisible because autosuggestion doesn't work properly in Xcode, [23:12.000 --> 23:16.000] but that's another thing. [23:16.000 --> 23:25.000] But in this way, it will be possible to hide some function and then rewrite it on Swift [23:25.000 --> 23:33.000] to have a better idiomatic Swift way of doing things. [23:33.000 --> 23:42.000] Another experimental thing that we got on Kotlin 1.8 is something that I was dreaming of [23:42.000 --> 23:51.000] because every time I saw, I see Android test and Android Android test, my ads explode [23:51.000 --> 24:00.000] because every time I think that it's a typo or something, but it's not a typo. [24:00.000 --> 24:08.000] But right now, this will change and there will be more descriptive things [24:08.000 --> 24:13.000] like instead of Android test, Android unit test, and instead of Android Android test, [24:13.000 --> 24:15.000] Android instrumented test. [24:15.000 --> 24:24.000] So it's going to be more clear and you got to understand really what is this thing. [24:24.000 --> 24:29.000] Connected to that, there will be more clarity also to where to put the manifest. [24:29.000 --> 24:41.000] So not in the Android main, but you're going to have a specific folder for the bug and release version, [24:41.000 --> 24:47.000] so it's going to be more clear just and you got to understand better. [24:47.000 --> 24:50.000] This thing is still experimental, of course. [24:50.000 --> 24:56.000] It's going to be enabled by default sometimes in the future, [24:56.000 --> 25:04.000] but if you want to use it, you have to opt in with a Gradle option. [25:04.000 --> 25:16.000] Another thing that there was in Kotlin 1.8 was the stabilization of the Kotlin.js [25:16.000 --> 25:26.000] and so finally, right now, all the three different technologies, so Kotlin for the JVM, [25:26.000 --> 25:32.000] Kotlin native and Kotlin.js are using the same backend, which means better handling, less bug, [25:32.000 --> 25:40.000] and everything works better. [25:40.000 --> 25:51.000] Another interesting goodie that is not specific to a specific version is that [25:51.000 --> 26:02.000] since version 1.4 to 1.8, they were experimentally checking binary back to work compatibility, [26:02.000 --> 26:04.000] which is always a nice thing. [26:04.000 --> 26:15.000] And from now on, there are processes set up on the side to keep binary compatibility from every release, [26:15.000 --> 26:23.000] which is going to alleviate the pain of having stuff broken. [26:23.000 --> 26:34.000] All right, another very interesting thing about Kotlin and the multi-platform word [26:34.000 --> 26:41.000] is the fact that JetBrains is maintaining also a composed version for desktop and the web, [26:41.000 --> 26:50.000] which is a fork from the Android one from Google. [26:50.000 --> 26:57.000] And yeah, the support is going on, but it's really neat. [26:57.000 --> 27:04.000] It's really beautiful because you can just use something nicer to write a desktop application [27:04.000 --> 27:10.000] and not still have not to deal with Zwing, Java, whatever stuff. [27:10.000 --> 27:15.000] So it's really nice that we have some sort of things. [27:15.000 --> 27:23.000] Of course, it takes time to keep it up with Google releases because they have to catch it up. [27:23.000 --> 27:31.000] But for example, a couple of days ago, we got the 1.3.0 release, [27:31.000 --> 27:38.000] and some stuff is going forward also on this side. [27:38.000 --> 27:47.000] Last year, we got also some interesting experimental stuff which is composed for iOS. [27:47.000 --> 27:52.000] Yes, it seems happening. [27:52.000 --> 28:00.000] It's still some very experimental and technical preview, so absolutely not ready for production. [28:00.000 --> 28:04.000] But people in the community are playing with that. [28:04.000 --> 28:14.000] For example, folks touch up, they built the DroidCon app for the iOS version of the DroidCon app [28:14.000 --> 28:19.000] with compose for iOS, which is something amazing. [28:19.000 --> 28:26.000] And yeah, this is something, as I said, not ready, but it's something to keep an eye on [28:26.000 --> 28:30.000] because it's going to be wild and interesting. [28:30.000 --> 28:34.000] So what is going to come this year? [28:34.000 --> 28:41.000] Well, there will be more improvements on the memory manager, [28:41.000 --> 28:49.000] even though it's already stable and it's the default memory manager. [28:49.000 --> 29:00.000] So folks would keep increasing and fixing bugs and increasing performance on that. [29:00.000 --> 29:06.000] Of course, there will be more improvement on compilation time on Kotlin native [29:06.000 --> 29:11.000] because it's still sometimes not the fastest thing in the world, [29:11.000 --> 29:16.000] and so it has to be improved. [29:16.000 --> 29:22.000] Another point, which is, like I was mentioning before, it's always asked from people, [29:22.000 --> 29:31.000] is better exporting to Objective-C, so have better APIs to interact with from the iOS part. [29:31.000 --> 29:39.000] And also, another thing will be after confirming that there are tools in place [29:39.000 --> 29:47.000] to have backward binary compatibility for the Kotlin native version, [29:47.000 --> 29:54.000] they will describe and add more improvements and documentation for library developers [29:54.000 --> 29:58.000] to maintain a binary compatibility as well. [29:58.000 --> 30:03.000] All of that is going to... [30:03.000 --> 30:11.000] All of these improvements are connected to have finally Kotlin native platform mobile to stable, [30:11.000 --> 30:14.000] which hopefully is going to happen this year. [30:14.000 --> 30:20.000] And in order to do that, there are a bunch of things that need to be addressed. [30:20.000 --> 30:26.000] Like I said before, it's mostly tool chain and infrastructure stuff, [30:26.000 --> 30:34.000] but the main thing is working and you can start already using it because it's in beta [30:34.000 --> 30:39.000] and stuff are kind of working right now. [30:39.000 --> 30:49.000] With that was it, the introduction of the journey into Kotlin for this year, [30:49.000 --> 30:53.000] from the past year and for this year. [30:53.000 --> 30:58.000] So, thank you very much. There will be a lot of content today, [30:58.000 --> 31:03.000] so feel free to catch it up with all of that and have fun. [31:03.000 --> 31:12.000] Thank you very much. [31:12.000 --> 31:17.000] We do have four minutes for questions, so if you have any, raise your hand. [31:17.000 --> 31:28.000] We'll bring in the microphone. [31:28.000 --> 31:35.000] Is it okay if I ask three consecutive questions, two of which are related? [31:35.000 --> 31:41.000] First of all, in terms of Kotlin JS and Kotlin native, [31:41.000 --> 31:48.000] those are not intended to be a performance alternative for existing solutions. [31:48.000 --> 31:52.000] Kotlin JS wasn't meant to be a challenger to TypeScript, [31:52.000 --> 31:59.000] and Kotlin native wasn't intended to rival things like Rust or Go, etc. [31:59.000 --> 32:04.000] Is there a change in that ambition? [32:04.000 --> 32:06.000] That's my first question. [32:06.000 --> 32:11.000] My second question is, does JetBrains have any plans to use Compose [32:11.000 --> 32:22.000] to port their IDEs to Compose from AWT? [32:22.000 --> 32:27.000] Okay, for the first one, [32:27.000 --> 32:37.000] I'm not sure if I heard or read some changes or stuff, [32:37.000 --> 32:46.000] but yeah, there's just another thing in the ecosystem, [32:46.000 --> 32:56.000] probably it's not gonna replace. [32:56.000 --> 33:01.000] I'm not sure what you catch or what not, so I'm gonna restart. [33:01.000 --> 33:08.000] I haven't read stuff or heard stuff that changed what you were saying. [33:08.000 --> 33:22.000] Probably there's gonna be other tooling to support and not to replace. [33:22.000 --> 33:27.000] So it's gonna be another thing to cover and other use cases, [33:27.000 --> 33:31.000] not to completely replace. [33:31.000 --> 33:40.000] But yeah, I don't have more clear guidance or evidence or opinions about that. [33:40.000 --> 33:45.000] The second one was about, there was noisy, I didn't get it fully, but... [33:45.000 --> 33:56.000] Yeah, I'm not JetBrains, so I don't know, [33:56.000 --> 34:00.000] but probably yes, if I have to bet it. [34:00.000 --> 34:09.000] I know that they have their own runtime for UI and stuff like that, [34:09.000 --> 34:15.000] but probably yes they are gonna use it, but I'm not JetBrains, so I don't know.