Kotlin (programming language): Difference between revisions

Content deleted Content added
m Disambiguating links to Meta (link changed to Meta Platforms) using DisamAssist.
Jooja (talk | contribs)
mNo edit summary
 
(24 intermediate revisions by 12 users not shown)
Line 3:
{{Infobox programming language
| name = Kotlin
| logo = Kotlin logo (2021-present).svg
| logo size = 230px
| paradigm = [[Multi-paradigm programming language|Multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[Functional programming|functional]], [[Imperative programming|imperative]], [[Block (programming)|block structured]], [[Declarative programming|declarative]], [[Generic programming|generic]], [[Reflective programming|reflective]], [[Concurrent computing|concurrent]]
Line 51:
 
==History==
[[File:Kotlin Mascot 2D no. 1Kodee-mascot-regular.svg|thumb|upright=0.5|AKotlin 2Dmascot picturenamed ofKodee the(regular Kotlin mascotversion)]]
[[File:Kotlin Mascot 3D no. 5Kodee-mascot-petite.pngsvg|thumb|upright=0.5|AKotlin 3Dmascot picturenamed ofKodee the(petite Kotlin mascotversion)]]
 
=== Name ===
Line 66:
Kotlin 1.0 was released on February 15, 2016.<ref>{{cite web |url=https://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-and-android/ |title=Kotlin 1.0 Released: Pragmatic Language for JVM and Android &#124; Kotlin Blog |website=Blog.jetbrains.com |date=15 February 2016 |access-date=11 April 2017 |archive-date=24 January 2018 |archive-url=https://web.archive.org/web/20180124194203/https://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-and-android/ |url-status=live}}</ref> This is considered to be the first officially stable release and JetBrains has committed to long-term backwards compatibility starting with this version.
 
At [[Google I/O]] 2017, Google announced first-class support for Kotlin on [[Android (operating system)|Android]].<ref name="kotlin-android">{{cite news |last1=Shafirov |first1=Maxim |date=17 May 2017 |url=https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/ |title=Kotlin on Android. Now official |quote=Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin. |access-date=18 May 2017 |url-status=live |archive-url=https://web.archive.org/web/20230529180054/https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/ |archive-date=29 May 2023}}</ref> On 7 May 2019, Google announced that the Kotlin programming language is now its preferred language for Android app developers.<ref name="auto"/>
 
Kotlin 1.1 was released on March 1, 2017.<ref>{{cite web |url=https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/ |title=Kotlin 1.1 Released With JavaScript Support, Coroutines, and More &#124; Kotlin Blog |website=Blog.jetbrains.com |date=1 March 2017 |access-date=9 April 2025 |archive-date=21 March 2025 |archive-url=https://web.archive.org/web/20250321000855/https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/ |url-status=live}}</ref>
 
Kotlin 1.2 was released on November 28, 2017.<ref>{{cite web |url=https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/ |title=Kotlin 1.2 Released: Sharing Code between Platforms &#124; Kotlin Blog |website=blog.jetbrains.com |date=28 November 2017 |access-date=29 November 2017 |archive-date=24 May 2023 |archive-url=https://web.archive.org/web/20230524172920/https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/ |url-status=live}}</ref> Sharing code between JVM and JavaScript platforms feature was newly added to this release (multiplatform programming is by now a [[Software release life cycle#Beta|beta]] feature<ref>{{Cite web|url=https://kotlinlang.org/docs/reference/multiplatform.html|title=Multiplatform Projects - Kotlin Programming Language|quote=Working on all platforms is an explicit goal for Kotlin, but we see it as a premise to a much more important goal: sharing code between platforms. With support for JVM, Android, JavaScript, iOS, Linux, Windows, Mac and even embedded systems like STM32, Kotlin can handle any and all components of a modern application.|website=Kotlin|access-date=20 August 2020|archive-date=18 August 2020|archive-url=https://web.archive.org/web/20200818193200/https://kotlinlang.org/docs/reference/multiplatform.html|url-status=live}}</ref> upgraded from "experimental"). A [[Solution stack|full-stack]] demo has been made with the new Kotlin/JS Gradle Plugin.<ref>{{Cite web|title=Kotlin/kotlin-full-stack-application-demo|date=3 April 2020|url=https://github.com/Kotlin/kotlin-full-stack-application-demo|publisher=Kotlin|access-date=4 April 2020|archive-date=14 September 2020|archive-url=https://web.archive.org/web/20200914043109/https://github.com/Kotlin/kotlin-full-stack-application-demo|url-status=live}}</ref><ref>{{Cite web|url=https://youtrack.jetbrains.com/issue/KT-37029|title=Kotlin full stack app demo: update all involving versions to work with 1.3.70 release|website=youtrack.jetbrains.com|access-date=4 April 2020|archive-date=2 August 2020|archive-url=https://web.archive.org/web/20200802221433/https://youtrack.jetbrains.com/issue/KT-37029|url-status=live}}</ref>
 
Kotlin 1.3 was released on 29 October 2018, adding support for [[coroutine]]s for use with [[Asynchrony (computer programming)|asynchronous]] programming.<ref>{{Cite news |url=https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/ |title=Kotlin 1.1 Released with JavaScript Support, Coroutines and more |access-date=1 May 2017 |archive-date=4 June 2023 |archive-url=https://web.archive.org/web/20230604202849/https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/ |url-status=live}}</ref>
 
On 7 May 2019, Google announced that the Kotlin programming language is now its preferred language for Android app developers.<ref name="auto"/>
 
Kotlin 1.4 was released in August 2020, with e.g. some slight changes to the support for Apple's platforms, i.e. to the [[Objective-C]]/[[Swift (programming language)|Swift]] [[interoperability|interop]].<ref>{{Cite web|title=What's New in Kotlin 1.4 - Kotlin Programming Language|url=https://kotlinlang.org/docs/reference/whatsnew14.html|quote=In 1.4.0, we slightly change the Swift API generated from Kotlin with respect to the way exceptions are translated.|access-date=2020-08-20|website=Kotlin|language=en|archive-date=8 June 2023|archive-url=https://web.archive.org/web/20230608120309/https://kotlinlang.org/docs/reference/whatsnew14.html|url-status=live}}</ref>
 
Kotlin 1.5 was released in May 2021.
 
Kotlin 1.6 was released in November 2021.
 
Kotlin 1.7 was released in June 2022, including the [[software release life cycle|alpha]] version of the new Kotlin K2 [[compiler]].<ref>{{Cite web |title=What's new in Kotlin 1.7.0 {{!}} Kotlin |url=https://kotlinlang.org/docs/whatsnew17.html |access-date=2022-06-20 |website=Kotlin Help |language=en-US |archive-date=20 June 2022 |archive-url=https://web.archive.org/web/20220620063004/https://kotlinlang.org/docs/whatsnew17.html |url-status=live}}</ref>
 
Kotlin 1.8 was released in December 2022, 1.8.0 was released on January 11, 2023.<ref>{{cite web
|last1=Krill |first1=Paul
|date=2023-01-12
|language=en
|url=https://www.infoworld.com/article/3682130/kotlin-180-adds-recursive-copy-delete-for-directories.html
|title=Kotlin 1.8.0 adds recursive copy, delete for directories
|access-date=2022-03-08
|archive-date=8 July 2023
|archive-url=https://web.archive.org/web/20230708072857/https://www.infoworld.com/article/3682130/kotlin-180-adds-recursive-copy-delete-for-directories.html
|url-status=live
}}</ref>
 
Kotlin 1.9 was released in July 2023, 1.9.0 was released on July 6, 2023.<ref>{{cite web
|last1=Haggarty |first1=Sarah
|date=2023-07-06
|language=en
|url=https://blog.jetbrains.com/kotlin/2023/07/kotlin-1-9-0-released/
|title=Kotlin 1.9.0 Released
|access-date=2023-07-06
|archive-date=28 July 2023
|archive-url=https://web.archive.org/web/20230728121628/https://blog.jetbrains.com/kotlin/2023/07/kotlin-1-9-0-released/
|url-status=live
}}</ref>
 
Kotlin 2.0 was released in May 2024, 2.0.0 was released on May 21, 2024.<ref>{{cite web
|author1=JetBrains
|date=2024-05-21
|language=en
|url=https://github.com/JetBrains/kotlin/releases/tag/v2.0.0
|title=Kotlin 2.0.0
|website=[[GitHub]]
|access-date=2024-05-21
|archive-date=21 May 2024
|archive-url=https://web.archive.org/web/20240521130132/https://github.com/JetBrains/kotlin/releases/tag/v2.0.0
|url-status=live
}}</ref>
 
Kotlin 2.1 was released in November 2024, 2.1.0 was released on November 27, 2024.<ref>{{cite web
|author1=JetBrains
|date=2024-11-27
|language=en
|url=https://github.com/JetBrains/kotlin/releases/tag/v2.1.0
|title=Kotlin 2.1.0
|website=[[GitHub]]
|access-date=2024-11-27
|archive-date=21 May 2024
|archive-url=https://web.archive.org/web/20240521130132/https://github.com/JetBrains/kotlin/releases/tag/v2.1.0
|url-status=live
}}</ref>
 
==Design==
Line 146 ⟶ 80:
* functions and methods support [[default argument]]s, [[variadic function|variable-length argument]] lists and [[Named parameter|named argument]]s
 
Kotlin 1.3 added support for contracts,<ref>{{Cite web|url=https://kotlinlang.org/docs/reference/whatsnew13.html|title=What's New in Kotlin 1.3 - Kotlin Programming Language|website=Kotlin|access-date=4 April 2020|archive-date=22 August 2023|archive-url=https://web.archive.org/web/20230822164600/https://kotlinlang.org/docs/reference/whatsnew13.html|url-status=live}}</ref> which are stable for the standard library declarations, but still experimental for user-defined declarations. Contracts are inspired by [[Eiffel (programming language)|Eiffel's]] [[design by contract]]<ref>{{Cite web|url=https://discuss.kotlinlang.org/t/design-by-contract-dbc-design-considerations/1321|title=Design by Contract (DbC) design considerations|quote=Implement the full semantics of Eiffel DbC and improve upon it.|date=16 August 2012|website=Kotlin Discussions|language=en-US|access-date=4 April 2020|archive-date=5 April 2023|archive-url=https://web.archive.org/web/20230405081654/https://discuss.kotlinlang.org/t/design-by-contract-dbc-design-considerations/1321|url-status=live}}</ref> [[programming paradigm]].
 
Following [https://www.scala-js.org/ ScalaJS], Kotlin code may be [[Source-to-source compiler|transpiled]] to [[JavaScript]], allowing for interoperability between code written in the two languages. This can be used either to write full web applications in Kotlin, or to share code between a Kotlin backend and a JavaScript frontend.<ref>{{Cite web|title=Kotlin for JavaScript {{!}} Kotlin|url=https://kotlinlang.org/docs/js-overview.html#use-cases-for-kotlin-js|date=21 January 2021<!-- 11 February 2021 -->|access-date=2021-03-19|website=Kotlin Help|language=en-US|archive-date=14 July 2023|archive-url=https://web.archive.org/web/20230714143003/https://kotlinlang.org/docs/js-overview.html#use-cases-for-kotlin-js|url-status=live}}</ref>
Line 428 ⟶ 362:
}}
 
* {{mono|?:}} (the [[null coalescing operator]]) is a binary operator that returns the first operand, if non-null, else the second operand. It is often referred to as the [[Elvis operator]], due to its resemblance to an [[emoticon]] representation of Elvis Presley.
 
{{blockquote |
Line 476 ⟶ 410:
* JetBrains also provides a plugin for [[Eclipse (software)|Eclipse]].<ref>{{cite web |url=https://kotlinlang.org/docs/tutorials/getting-started-eclipse.html |title=Getting Started with Eclipse Neon – Kotlin Programming Language |website=Kotlinlang.org |date=10 November 2016 |access-date=11 April 2017 |archive-date=18 May 2023 |archive-url=https://web.archive.org/web/20230518022923/https://kotlinlang.org/docs/tutorials/getting-started-eclipse.html |url-status=live}}</ref><ref>{{cite web |url=https://github.com/JetBrains/kotlin-eclipse |title=JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse |publisher=GitHub |access-date=11 April 2017 |archive-date=16 February 2016 |archive-url=https://web.archive.org/web/20160216150931/https://github.com/JetBrains/kotlin-eclipse |url-status=live}}</ref>
* [[IntelliJ IDEA]] has plug-in support for Kotlin.<ref>{{cite web |url=https://plugins.jetbrains.com/plugin/6954-kotlin |title=Kotlin :: JetBrains Plugin Repository |website=Plugins.jetbrains.com |date=31 March 2017 |access-date=11 April 2017 |archive-date=25 June 2023 |archive-url=https://web.archive.org/web/20230625051612/https://plugins.jetbrains.com/plugin/6954-kotlin |url-status=live}}</ref> IntelliJ IDEA 15 was the first version to bundle the Kotlin plugin in the IntelliJ Installer, and to provide Kotlin support out of the box.<ref>{{cite web |url=https://www.jetbrains.com/idea/whatsnew/ |title=What's New in IntelliJ IDEA 2017.1 |website=Jetbrains.com |access-date=11 April 2017 |archive-date=3 October 2023 |archive-url=https://web.archive.org/web/20231003212723/https://www.jetbrains.com/idea/whatsnew/ |url-status=live}}</ref>
* [[Gradle]]: Kotlin has seamless integration with Gradle, which is a popular [[build automation]] tool. Gradle allows you to build, automate, and manage the lifecycle of your Kotlin projects efficiently<ref>{{Cite web |title=Gradle |url=https://kotlinlang.org/docs/gradle.html |access-date=2024-04-08 |website=Kotlin Help |language=en-US |archive-date=8 April 2024 |archive-url=https://web.archive.org/web/20240408064338/https://kotlinlang.org/docs/gradle.html |url-status=live}}</ref>
 
==Kotlin Multiplatform==
Kotlin Multiplatform allows a single [[codebase]] to target multiple platforms such as [[Microsoft Windows|Windows]], [[Linux]], web, Android and [[iOS]].<ref>{{Cite web |title=Kotlin Multiplatform Overview |url=https://developer.android.com/kotlin/multiplatform |access-date=2025-06-14 |website=Android Developers |language=en}}</ref><ref>{{Cite web |title=Kotlin Multiplatform – Build Cross-Platform Apps |url=https://www.jetbrains.com/kotlin-multiplatform/ |access-date=2025-06-14 |website=JetBrains |language=en}}</ref>
 
Compose Multiplatform is a multi-platform UI framework based on [[Jetpack Compose]]. It is Jetpack Compose for Android ported to Windows, [[macOS]], Linux, web, and iOS.<ref>{{Cite web |title=Compose Multiplatform – Beautiful UIs Everywhere |url=https://www.jetbrains.com/compose-multiplatform/ |access-date=2025-06-14 |website=JetBrains |language=en}}</ref><ref>{{Cite web |title=What's new in Compose Multiplatform 1.8.1 {{!}} Kotlin Multiplatform |url=https://www.jetbrains.com/help/kotlin-multiplatform-dev/whats-new-compose-180.html |access-date=2025-06-14 |website=Kotlin Multiplatform Help |language=en-US}}</ref><ref>{{Cite web |title=Compatibility and versions {{!}} Kotlin Multiplatform |url=https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compatibility-and-versioning.html |access-date=2025-06-14 |website=Kotlin Multiplatform Help |language=en-US}}</ref> Jetpack Compose uses a Kotlin compiler plugin to transform composable functions into UI elements.<ref>{{Citation |last=Panjuta |first=Denis |title=Basic Jetpack Compose Elements |date=2023-12-12 |work=Tiny Android Projects Using Kotlin |pages=233–257 |url=https://doi.org/10.1201/9781032622538-9 |access-date=2025-06-14 |place=Boca Raton |publisher=Chapman and Hall/CRC |isbn=978-1-032-62253-8 |last2=Nwokike |first2=Loveth}}</ref> For example, the Text composable function displays a text label on the screen.
 
==Applications==
When Kotlin was announced as an official Android development language at [[Google I/O]] in May 2017, it became the third language fully supported for Android, after Java and C++.<ref>{{Cite news |last1=Lardinois|first1=Frederic |url=https://techcrunch.com/2017/05/17/google-makes-kotlin-a-first-class-language-for-writing-android-apps/ |title=Google makes Kotlin a first-class language for writing Android apps |website=techcrunch.com |language=en-US |date=17 May 2017 |access-date=28 June 2018 |url-status=live |archive-url=https://web.archive.org/web/20170522065631/https://techcrunch.com/2017/05/17/google-makes-kotlin-a-first-class-language-for-writing-android-apps/ |archive-date=22 May 2017}}</ref> {{As of|2020}}, Kotlin was the most widely used language on Android, with Google estimating that 70% of the top 1,000 apps on the Play Store were written in Kotlin. Google itself had 60 apps written in Kotlin, including Maps and Drive. Many Android apps, such as Google Home, were in the process of being migrated to Kotlin, and therefore use both Kotlin and Java. Kotlin on Android is seen as beneficial for its [[null-pointer safety]], as well as for its features that make for shorter, more readable code.<ref>{{cite web|url=https://www.zdnet.com/article/google-were-using-kotlin-programming-language-to-squash-the-bugs-that-cause-most-crashes/|website=ZDNet|title=Kotlin programming language: How Google is using it to squash the code bugs that cause most crashes|access-date=6 December 2020|archive-date=6 April 2023|archive-url=https://web.archive.org/web/20230406045458/https://www.zdnet.com/article/google-were-using-kotlin-programming-language-to-squash-the-bugs-that-cause-most-crashes/|url-status=live}}</ref>
 
InKtor additionis toJetbrains itsKotlin prominentfirst useframework onfor Android,building Kotlinserver wasand gainingclient tractionapplications.<ref>{{Citation in|title=ktorio/ktor server|date=2025-side06-16 development|url=https://github.com/ktorio/ktor |access-date=2025-06-16 |publisher=ktor.io}}</ref><ref>{{Cite web |title=Welcome {{!}} Ktor |url=https://ktor.io/docs/3.1.3/welcome.html |access-date=2025-06-16 |website=Ktor Help |language=en-US}}</ref> The [[Spring Framework]] officially added Kotlin support with version 5, on 4 January 2017.<ref>{{cite web |url=https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0 |website=Spring |title=Introducing Kotlin support in Spring Framework 5.0 |date=4 January 2017 |publisher=Pivotal |access-date=29 September 2020 |archive-date=23 August 2023 |archive-url=https://web.archive.org/web/20230823031409/https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0/ |url-status=live}}</ref> To further support Kotlin, Spring has translated all its documentation to Kotlin, and added built-in support for many Kotlin-specific features such as [[coroutines]].<ref>{{cite web|title=The State of Kotlin Support in Spring|url=https://blog.jetbrains.com/kotlin/2020/08/the-state-of-kotlin-support-in-spring/|website=JetBrains|date=14 August 2020|access-date=6 December 2020|language=en|archive-date=7 June 2023|archive-url=https://web.archive.org/web/20230607090327/https://blog.jetbrains.com/kotlin/2020/08/the-state-of-kotlin-support-in-spring/|url-status=live}}</ref> In addition to Spring, JetBrains has produced a Kotlin-first framework called Ktor for building web applications.<ref>{{cite web|url=https://dzone.com/articles/not-only-spring-boot-a-review-of-alternatives|website=DZone|title=Review of Microservices Frameworks: A Look at Spring Boot Alternatives|access-date=6 December 2020|archive-date=21 May 2023|archive-url=https://web.archive.org/web/20230521150446/https://dzone.com/articles/not-only-spring-boot-a-review-of-alternatives|url-status=live}}</ref>
 
In 2020, JetBrains found in a survey of developers who use Kotlin that 56% were using Kotlin for mobile apps, while 47% were using it for a web back-end. Just over a third of all Kotlin developers said that they were migrating to Kotlin from another language. Most Kotlin users were targeting Android (or otherwise on the JVM), with only 6% using Kotlin Native.<ref>{{cite web |title=Kotlin Programming - The State of Developer Ecosystem 2020 |url=https://www.jetbrains.com/lp/devecosystem-2020/kotlin/ |website=JetBrains |access-date=29 September 2020 |language=en |archive-date=5 April 2023 |archive-url=https://web.archive.org/web/20230405081654/https://www.jetbrains.com/lp/devecosystem-2020/kotlin/ |url-status=live}}</ref>
Line 517 ⟶ 456:
 
* [[Basecamp (software)|Basecamp]]<ref>{{Cite news |url=https://m.signalvnoise.com/how-we-made-basecamp-3s-android-app-100-kotlin-35e4e1c0ef12 |archive-url=https://wayback.archive-it.org/all/20180801160548/https://m.signalvnoise.com/how-we-made-basecamp-3s-android-app-100-kotlin-35e4e1c0ef12?gi=e9a4b3c9bf9f |url-status=dead |archive-date=1 August 2018 |title=How we made Basecamp 3's Android app 100% Kotlin – Signal v. Noise |date=29 April 2017 |work=Signal v. Noise |access-date=1 May 2017}}</ref>
* Corda, a distributed ledger developed by a consortium of well-known banks (such as [[Goldman Sachs]], [[Wells Fargo]], [[JPMorgan Chase|J.P. Morgan]], [[Deutsche Bank]], [[UBS]], [[HSBC]], [[BNP Paribas]], and [[Société Générale]]), has over 90% Kotlin code in its codebase.{{Citation needed|date=July 2025|reason=Making a big claim and naming a lot of names here, so where's the source?}}
* [[Coursera]]<ref>{{cite web |url=https://medium.com/coursera-engineering/becoming-bilingual-coursera-d8048dce73e3 |title=Becoming bilingual@coursera |date=26 April 2018 |access-date=24 July 2019 |archive-date=15 January 2023 |archive-url=https://web.archive.org/web/20230115223242/https://medium.com/coursera-engineering/becoming-bilingual-coursera-d8048dce73e3 |url-status=live}}</ref>
* DripStat<ref>{{cite web |url=https://blog.dripstat.com/kotlin-in-production-the-good-the-bad-and-the-ugly-2/ |title=Kotlin in Production – What works, Whats broken |website=Blog.dripstat.com |date=24 September 2016 |access-date=11 April 2017 |archive-date=1 July 2019 |archive-url=https://web.archive.org/web/20190701030659/https://blog.dripstat.com/kotlin-in-production-the-good-the-bad-and-the-ugly-2/ |url-status=dead}}</ref>
* [[Duolingo]]<ref>{{cite web |last1=Chaidarun |first1=Art |title=Migrating Duolingo’sDuolingo's Android app to 100% Kotlin |url=https://blog.duolingo.com/migrating-duolingos-android-app-to-100-kotlin/ |website=Duolingo Blog |language=en |date=6 April 2020}}</ref>
* [[Meta Platforms|Meta]]<ref>{{cite web |url=https://www.infoq.com/news/2022/11/meta-port-java-kotlin/ |title=Porting Million Lines of Code from Java to Kotlin at Meta }}</ref>
* [[Netflix]]<ref>{{cite web |url=https://twitter.com/robspieldenner/status/708355228832178176 |title=Rob Spieldenner on twitter |access-date=24 July 2019 |archive-date=25 December 2022 |archive-url=https://web.archive.org/web/20221225132754/https://twitter.com/robspieldenner/status/708355228832178176 |url-status=live}}</ref>
* [[Pinterest]]<ref>{{cite web |url=https://www.youtube.com/watch?v=mDpnc45WwlI |title=Droidcon NYC 2016 - Kotlin in Production |website=[[YouTube]] |date=3 November 2016 |access-date=24 July 2019 |archive-date=14 April 2023 |archive-url=https://web.archive.org/web/20230414150938/https://www.youtube.com/watch?v=mDpnc45WwlI |url-status=live}}</ref>