{"id":214657,"date":"2021-12-23T06:49:44","date_gmt":"2021-12-23T05:49:44","guid":{"rendered":"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/"},"modified":"2021-12-23T06:49:48","modified_gmt":"2021-12-23T05:49:48","slug":"kotlin-1-6-0-is-released","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2021\/12\/kotlin-1-6-0-is-released\/","title":{"rendered":"Kotlin 1.6.0 \ucd9c\uc2dc"},"content":{"rendered":"<p>\uc0c8\ub86d\uac8c \uacf5\uc2dd \ucd9c\uc2dc\ub41c Kotlin 1.6.0\uc5d0\ub294 \uc548\uc815\ud654\uac00 \uc644\ub8cc\ub41c <code>when<\/code>, Kover \ubc0f Kotlin\/Native\uc6a9\uc758 \uc0c8\ub85c\uc6b4 \uba54\ubaa8\ub9ac \uad00\ub9ac\uc790\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. 1.5.30\uc5d0 \ucd9c\uc2dc\ub41c \ub2e4\ub978 \uc5b8\uc5b4 \ubc0f \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uae30\ub2a5\ub3c4 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noopener\">\uc548\uc815\ud654<\/a> \ub2e8\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4. \uc758\uacac\uc744 \ubcf4\ub0b4\uc8fc\uc2e0 \ubaa8\ub4e0 \ubd84\ub4e4\uaed8 \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4. \uc544\uc9c1 \uc774 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud574 \ubcf4\uc9c0 \uc54a\uc558\ub2e4\uba74 \uc9c0\uae08 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694!<\/p>\n<p>\uc774 \ube14\ub85c\uadf8 \uae00\uc5d0\uc11c\ub294 \ub2e4\uc74c \uc5c5\ub370\uc774\ud2b8\uc5d0 \ub300\ud55c \uac1c\uc694\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#language-features\">\uc5b8\uc5b4 \uae30\ub2a5<\/a>: sealed when \ubb38, \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218 \ubc0f \uc77c\uc2dc\uc911\uc9c0 \ubcc0\ud658,&nbsp;\uc5b4\ub178\ud14c\uc774\uc158 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ud654, \ud5a5\uc0c1\ub41c \uc77c\ubc18 \ud0c0\uc785 \ucd94\ub860 \ubc0f \ube4c\ub354 \ud0c0\uc785 \ucd94\ub860.<\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#jvm\">Kotlin\/JVM<\/a>: \uc704\uc784 \ud504\ub85c\ud37c\ud2f0\uc640 \ubc18\ubcf5 \uac00\ub2a5\ud55c \uc5b4\ub178\ud14c\uc774\uc158 \ucd5c\uc801\ud654.<\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#native\">Kotlin\/Native<\/a>: \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc758 \uc0c8 \uba54\ubaa8\ub9ac \ubaa8\ub378, Xcode 13 \uc9c0\uc6d0, Windows \ub300\uc0c1\uc758 \uad50\ucc28 \ucef4\ud30c\uc77c, LLVM \ubc0f \ub9c1\ucee4 \uc5c5\ub370\uc774\ud2b8, \uc131\ub2a5 \uc5c5\ub370\uc774\ud2b8, \ud1b5\ud569 \ucef4\ud30c\uc77c\ub7ec \ud50c\ub7ec\uadf8\uc778 ABI.<\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#js\">Kotlin\/JS<\/a>: Node.js \ubc0f Yarn \ub2e4\uc6b4\ub85c\ub4dc\ub97c \ube44\ud65c\uc131\ud654\ud558\ub294 \uc635\uc158.<\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#kover\">Kover<\/a> \ubc1c\ud45c.<\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#standard-library\">\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac<\/a>: \ud45c\uc900 \uc785\ub825\uc744 \uc704\ud55c \uc0c8\ub85c\uc6b4 \ud568\uc218, \uc548\uc815\ud654\ub41c <code>typeOf()<\/code>, \uc548\uc815\ud654\ub41c Duration API \ubc0f \uae30\ud0c0 \uc548\uc815\ud654\ub41c stdlib \ud568\uc218.<\/li>\n<\/ul>\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\n<div class=\"wp-block-embed__wrapper\"><iframe loading=\"lazy\" title=\"Kotlin 1.6.0\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\" src=\"https:\/\/www.youtube.com\/embed\/6jrmcfYdfvI?feature=oembed\" width=\"500\" height=\"281\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/figure>\n<p><strong><em>\ube14\ub85c\uadf8\ub97c <a href=\"https:\/\/info.jetbrains.com\/kotlin-communication-center-page.html\" target=\"_blank\" rel=\"noopener\">\uad6c\ub3c5<\/a><\/em><\/strong><strong><em><strong><em>\ud558\uc5ec Kotlin \uc5c5\ub370\uc774\ud2b8\ub97c \ub193\uce58\uc9c0 \ub9c8\uc138\uc694.<\/em><\/strong><\/em><\/strong><\/p>\n<h1>\uc5c5\ub370\uc774\ud2b8 \ubc29\ubc95<\/h1>\n<p><a href=\"https:\/\/www.jetbrains.com\/idea\/download\/\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA<\/a> \ub610\ub294 <a href=\"https:\/\/developer.android.com\/studio\" target=\"_blank\" rel=\"noopener\">Android Studio<\/a>\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, \uc0c8\ub85c\uc6b4 Kotlin \ub9b4\ub9ac\uc2a4\uac00 \ucd9c\uc2dc\ub418\ub294 \uc989\uc2dc \uc790\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\ub294 \uc635\uc158\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/p>\n<p><a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/#how-to-install\">Kotlin 1.6.0 \uc124\uce58 \ubc29\ubc95<\/a>\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Kotlin 1.6.0\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released\/\/#how-to-install\">Kotlin 1.6.0\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8<\/a><\/p>\n<h1 id=\"language-features\">\uc5b8\uc5b4 \uae30\ub2a5<\/h1>\n<p>\uc5ec\ub7ec\ubd84\uc758 \ud53c\ub4dc\ubc31\uc744 \uae30\ubc18\uc73c\ub85c Kotlin 1.5.30\uc758 \uae30\ub2a5\uc744 \uc548\uc815\ud654\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>(\uc644\uc804\ud55c) sealed <code>when<\/code> \ubb38<\/h2>\n<p>sealed <code>when<\/code>\uc740 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-12380\" target=\"_blank\" rel=\"noopener\">\uc624\ub7ab\ub3d9\uc548 \uae30\ub2e4\ub824\uc628<\/a> \uae30\ub2a5\uc73c\ub85c, when \ubb38\uc774 \uc644\uc804\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 Kotlin \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \uacbd\uace0\ud569\ub2c8\ub2e4. \ub355\ubd84\uc5d0 \uc790\uccb4 \ud568\uc218\ub97c \uc0bd\uc785\ud558\uc9c0 \uc54a\uace0\ub3c4 \ucf54\ub4dc\ub97c \ub354 \uc548\uc804\ud558\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p>Kotlin\uc740 sealed \ud074\ub798\uc2a4, \uc5f4\uac70\ud615 \ubc0f \ubd80\uc6b8 \ud0c0\uc785\uc5d0 \ub300\ud55c <code>when<\/code> <em>\uc2dd<\/em>\uc744 \ud56d\uc0c1 \uc644\uc804\ud558\uac8c \ud655\uc778\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uc774\ub7ec\ud55c \ub300\uc218 \ub370\uc774\ud130 \ud615\uc2dd\uc73c\ub85c \ub3c4\uba54\uc778\uc744 \ubaa8\ub378\ub9c1\ud560 \ub54c \ud2b9\ud788 \ub3c4\uc6c0\uc774 \ub418\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 sealed \ud074\ub798\uc2a4 \uacc4\uce35 \uad6c\uc870\ub85c \ubaa8\ub378\ub9c1\ub41c \uc571\uc758 \uacbd\uc6b0 \uc0ac\uc6a9\uc790\ub9c8\ub2e4 \uc5f0\ub77d\ucc98\ub97c \uc0c1\uc774\ud558\uac8c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">sealed class Contact {\n   data class PhoneCall(val number: String) : Contact()\n   data class TextMessage(val number: String) : Contact()\n   data class InstantMessage(val type: IMType, val user: String) : Contact()\n}\n<\/pre>\n<p>\uc774\ub54c \uc5f0\ub77d\ucc98 \ud658\uacbd \uc124\uc815\uc5d0 \ub530\ub77c \ub2e4\ub978 \uacb0\uacfc\ub97c \ubc18\ud658\ud558\ub294 \ud45c\ud604\uc2dd\uc744 \uc791\uc131\ud558\uc600\uc73c\ub098 \uae5c\ubc15 \uc78a\uace0 \uc571\uc5d0 \uc788\ub294 \ubaa8\ub4e0 \ud0c0\uc785\uc744 \ucc98\ub9ac\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0, \uc774\uc81c \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \uc624\ub958\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">fun Rates.computeMessageCost(contact: Contact): Cost =\n   when (contact) { \/\/ ERROR: 'when' expression must be exhaustive\n       is Contact.PhoneCall -&gt; phoneCallCost\n       is Contact.TextMessage -&gt; textMessageCost\n   }\n<\/pre>\n<p>\uc774\ub294 \ucf54\ub4dc \uc791\uc131\uacfc \ud5a5\ud6c4 \uc720\uc9c0 \uad00\ub9ac\uc5d0 \ud070 \ub3c4\uc6c0\uc744 \uc90d\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ub2e4\ub978 \ud0c0\uc785\uc758 \uc5f0\ub77d\ucc98 \ud658\uacbd \uc124\uc815\uc744 \ucd94\uac00\ud558\ub354\ub77c\ub3c4, \ucf54\ub4dc \uc804\uccb4\uc5d0 \uac78\uccd0 \ub2e4\uc591\ud55c \ud0c0\uc785\uc758 \uc5f0\ub77d\ucc98 \ud658\uacbd \uc124\uc815\uc744 \uc78a\uc9c0 \uc54a\uace0 \ucc98\ub9ac\ud558\ub3c4\ub85d \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \uc54c\ub824\uc904 \uac83\uc774\ubbc0\ub85c \uc548\uc2ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Kotlin 1.6 \uc774\uc804\uc5d0\ub294 \ucef4\ud30c\uc77c\ub7ec\uac00 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc778\uc2a4\ud134\ud2b8 \uba54\uc2dc\uc9c0 \uc54c\ub9bc\uc744 \ubcf4\ub0b4\ub294 \uac83\uc744 \uc644\uc804\ud788 \uc78a\uc5b4\ubc84\ub824\ub3c4 <code>when<\/code> <em>\ubb38<\/em>\uc744 \uc0ac\uc6a9\ud558\ub294 \ub2e4\uc74c \ucf54\ub4dc\uac00 \uc131\uacf5\uc801\uc73c\ub85c \ucef4\ud30c\uc77c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">fun sendAnnouncement(contact: Contact, announcement: Announcement) {\n   when (contact) {\n       is Contact.PhoneCall -&gt; schedulePhoneCall(contact.number, announcement)\n       is Contact.TextMessage -&gt; sendTextMessage(contact.number, announcement)\n   }\n}\n<\/pre>\n<p>\uc774\ub54c\ub294 \ucef4\ud30c\uc77c\ub7ec\ub85c\ubd80\ud130 \uc5b4\ub5a4 \uba54\uc2dc\uc9c0\ub3c4 \uc5c6\uc774 \uc57d\ud55c IDE \uac80\uc0ac\ub9cc \ubcf4\uace0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Kotlin 1.6\ubd80\ud130\ub294 \ub2e4\uc74c \ucef4\ud30c\uc77c\ub7ec \uacbd\uace0\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/p>\n<p><code>Non-exhaustive 'when' statements on sealed class\/interface will be prohibited in 1.7. Add an 'is InstantMessage' branch or 'else' branch instead.<\/code><\/p>\n<p>Kotlin 1.7\uc5d0\uc11c\ub294 \uc774\uac83\uc774 \uc624\ub958\ub85c \ucde8\uae09\ub418\ubbc0\ub85c \uc2e4\uc218\ub85c \uc78a\uc5b4\ubc84\ub9b4 \uac00\ub2a5\uc131\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \ubcc0\uacbd \uc0ac\ud56d\uacfc \uadf8 \uc601\ud5a5\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \uc124\uba85\uc740 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-47709\" target=\"_blank\" rel=\"noopener\">KT-47709<\/a>\ub97c \ucc38\uc870\ud558\uc138\uc694.&nbsp;<\/p>\n<h2>\uc0c1\uc704 \ud0c0\uc785\uc73c\ub85c\uc11c \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218<\/h2>\n<p>Kotlin 1.6\uc740 <code>suspend<\/code> \ud568\uc218 \ud0c0\uc785\uc744 \uc0c1\uc704 \uc778\ud130\ud398\uc774\uc2a4\ub85c \uad6c\ud604\ud558\ub294 \uac83\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \uc548\uc815\ud654\ud588\uc2b5\ub2c8\ub2e4. \uc774 \ubd80\ubd84\uc740 Kotlin \ucf54\ub8e8\ud2f4 \uc124\uacc4\uc5d0\uc11c \ub204\ub77d\ub41c \ubd80\ubd84 \uc911 \ud558\ub098\uc600\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p>Kotlin API\ub97c \uc124\uacc4\ud558\uba74\uc11c \ub2e4\uc591\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac \ud568\uc218\uc758 \ub3d9\uc791\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud574\uc57c \ud560 \ub54c\uc5d0\ub294 \ud568\uc218 \ud0c0\uc785\uc744 \uc218\uc6a9\ud558\ub294 \uac83\uc774 \uad00\uc6a9\uc801\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, <code>kotlinx.coroutines<\/code> API\uc758 Job \uc778\ud130\ud398\uc774\uc2a4\uc5d0\ub294 \ub2e4\uc74c\uacfc \uc720\uc0ac\ud55c \uba64\ubc84 \ud568\uc218\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">fun invokeOnCompletion(handler: () -&gt; Unit)\n<\/pre>\n<p>\uc774 \ud568\uc218\ub294 <code><em>invokeOnCompletion <\/em><strong>{ <\/strong><em>doSomething<\/em>() <strong>}<\/strong><\/code>\uacfc \uac19\uc740 \ub78c\ub2e4\uc640 \ud568\uaed8 \ud3b8\ub9ac\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucf54\ub4dc \uc644\uc131\uc744 \ucc98\ub9ac\ud558\ub824\ub294 \ud074\ub798\uc2a4\uac00 \uc788\ub294 \uacbd\uc6b0, \ucd94\uac00 \ub78c\ub2e4\ub97c \uc0dd\uc131\ud558\uc9c0 \uc54a\uace0 \ud074\ub798\uc2a4\uc5d0\uc11c \ubc14\ub85c \ud568\uc218 \ud0c0\uc785 <code>() -&gt; Unit<\/code>\uc744 \uad6c\ud604\ud558\uc5ec \ucf54\ub4dc\ub97c \uac04\uc18c\ud654\ud558\uace0 \ucd5c\uc801\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">class MyCompletionHandler : () -&gt; Unit {\n   override fun invoke() { doSomething() }\n}\n<\/pre>\n<p>Kotlin 1.6\ubd80\ud130 \uc774 \ucd5c\uc801\ud654\ub294 \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218\ub85c \uac00\ub2a5\ud569\ub2c8\ub2e4. \ud574\ub2f9 API\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218 \ud0c0\uc785\uc744 \ud5c8\uc6a9\ud558\ub294 \uacbd\uc6b0:<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">public fun launchOnClick(action: suspend () -&gt; Unit) {}\n<\/pre>\n<p>&#8230;\ub354 \uc774\uc0c1 \uc774 \ucf54\ub4dc\uc5d0 \ub78c\ub2e4\uc640 \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218 \ucc38\uc870\ub97c \uc804\ub2ec\ud558\ub294 \uac83\uc5d0 \uc81c\ud55c\ubc1b\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4\uc5d0\uc11c \uadf8\uc5d0 \ud574\ub2f9\ud558\ub294 \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218 \ud0c0\uc785\uc744 \uad6c\ud604\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">class MyClickAction : suspend () -&gt; Unit {\n   override suspend fun invoke() { doSomething() }\n}\n<\/pre>\n<h2>\uc77c\uc2dc\uc911\uc9c0 \ubcc0\ud658<\/h2>\n<p>Kotlin 1.6\uc740 \uc77c\ubc18 \ud568\uc218 \ud0c0\uc785\uc5d0\uc11c \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218 \ud0c0\uc785\uc73c\ub85c\uc758 \ubcc0\ud658\uc744 \uc548\uc815\ud654\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc77c\uc2dc\uc911\uc9c0\uac00 \ud544\uc694\ud55c \uc801\uc808\ud55c \uc77c\ubc18 \ud568\uc218 \ud0c0\uc785\uc758 \ud45c\ud604\uc2dd\uc744 \ub9e4\uac1c\ubcc0\uc218\ub85c\uc11c \uc804\ub2ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\uc740 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \uc790\ub3d9\uc73c\ub85c \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p>\uadf8 \uacb0\uacfc Kotlin\uc5d0\uc11c \uc77c\ubc18 \ud568\uc218\uc640 \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218 \uac04\uc758 \uc0c1\ud638\uc791\uc6a9\uc5d0 \uc788\uc5c8\ub358 \uc0ac\uc18c\ud558\uc9c0\ub9cc \uc131\uac00\uc2e0 \ubd88\uc77c\uce58 \ubb38\uc81c\uac00 \ud574\uacb0\ub429\ub2c8\ub2e4. Kotlin Flow\uc758 <a href=\"https:\/\/kotlin.github.io\/kotlinx.coroutines\/kotlinx-coroutines-core\/kotlinx.coroutines.flow\/collect.html\" target=\"_blank\" rel=\"noopener\">collect<\/a> \ud638\ucd9c\uacfc \uac19\uc774 \uc77c\uc2dc\uc911\uc9c0 \ud568\uc218\ub97c \ud5c8\uc6a9\ud558\ub294 \uace0\ucc28 \ud568\uc218\uac00 \uc788\ub294 \uacbd\uc6b0, \ub2e4\uc74c\ucc98\ub7fc \uc774\ub97c \ud638\ucd9c\ud558\uae30 \uc704\ud574 \ub78c\ub2e4\ub97c \uc0ac\uc6a9\ud558\ub294 \ub300\uc2e0:<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">flow.collect { processItem(it) }\n<\/pre>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">fun processItem(item: Item) { \/* ... *\/ }\n<\/pre>\n<p>&#8230; <code>processItem<\/code> \ud568\uc218\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c <code>collect<\/code> \ud638\ucd9c\uc5d0 \uc804\ub2ec\ud558\uc5ec \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \ub0b4\ub294 \uac83\uc774 \ud3b8\ub9ac\ud558\ub2e4\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc744 \uac81\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">flow.collect(::processItem)\n<\/pre>\n<p>\uadf8\ub7f0 \ub2e4\uc74c \ucf54\ub4dc\uc758 \ub3d9\uc791\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud558\uae30 \uc704\ud574 \ucc98\ub9ac \ud568\uc218\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \ubcc0\uc218\ub85c \ucd94\ucd9c\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 1.6 \uc774\uc804\uc758 Kotlin \ubc84\uc804\uc5d0\uc11c\ub294 \uc774\uac83\uc774 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uc77c\uc2dc\uc911\uc9c0 \ud0c0\uc785\uc758 \ub9e4\uac1c\ubcc0\uc218\ub85c\uc11c \uc804\ub2ec\ub418\ub294 \uc77c\ubc18 \ud568\uc218\uac00 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">val processingFunction = ::processItem\nflow.collect(processingFunction) \/\/ ERROR: Type mismatch\n<\/pre>\n<p>Kotlin 1.6\uc5d0\uc11c\ub294 \uc704\uc758 \ucf54\ub4dc\ub3c4 \ucef4\ud30c\uc77c\ub418\uace0 \uc798 \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uc7ac\uadc0\uc801 \uc81c\ub124\ub9ad \ud0c0\uc785\uc5d0 \ub300\ud55c \ud0c0\uc785 \ucd94\ub860 \uac1c\uc120<\/h2>\n<p>1.6.0\ubd80\ud130 Kotlin \ucef4\ud30c\uc77c\ub7ec\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc7ac\uadc0\uc801 \uc81c\ub124\ub9ad\uc778 \uacbd\uc6b0\uc5d0 \ud574\ub2f9 \ud0c0\uc785 \ub9e4\uac1c\ubcc0\uc218\uc758 \uc0c1\uc704 \ubc14\uc6b4\ub4dc\ub9cc \uace0\ub824\ud558\uc5ec \ud0c0\uc785 \uc778\uc218\ub97c \ucd94\ub860\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc5d0 \ub530\ub77c \ube4c\ub354 API\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574 Java\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \uc7ac\uadc0\uc801 \uc81c\ub124\ub9ad \ud0c0\uc785\uc73c\ub85c \ub2e4\uc591\ud55c \ud328\ud134\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">\/\/ 1.5.30 \uc774\uc804\nval containerA = PostgreSQLContainer&lt;nothing&gt;(DockerImageName.parse(\"postgres:13-alpine\")).apply {\n    withDatabaseName(\"db\")\n    withUsername(\"user\")\n    withPassword(\"password\")\n    withInitScript(\"sql\/schema.sql\")\n}\n\n\/\/ 1.5.30\uc758 \ucef4\ud30c\uc77c\ub7ec \uc635\uc158\uc73c\ub85c \ub610\ub294 1.6.0\ubd80\ud130\ub294 \uae30\ubcf8\uc801\uc73c\ub85c\nval containerB = PostgreSQLContainer(DockerImageName.parse(\"postgres:13-alpine\"))\n    .withDatabaseName(\"db\")\n    .withUsername(\"user\")\n    .withPassword(\"password\")\n    .withInitScript(\"sql\/schema.sql\")\n<\/pre>\n<p><\/p>\n<h2>\ube4c\ub354 \ucd94\ub860 \uac1c\uc120 \uc0ac\ud56d<\/h2>\n<p>Kotlin 1.5.30\uc5d0\uc11c\ub294 <code>-Xunrestricted-builder-inference<\/code> \ucef4\ud30c\uc77c\ub7ec \uc635\uc158\uc744 \ub3c4\uc785\ud558\uc5ec \ube4c\ub354 \ud638\ucd9c\uc5d0 \ub300\ud55c \ud0c0\uc785 \uc815\ubcf4\ub97c \ube4c\ub354 \ub78c\ub2e4 \ub0b4\ubd80\ub85c \uac00\uc838\uc62c \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc989, <code>buildList()<\/code> \ub78c\ub2e4 \ub0b4\ubd80\uc758 <code>get()<\/code>\uacfc \uac19\uc774 \uc544\uc9c1 \ucd94\ub860\ub418\uc9c0 \uc54a\uc740 \ud0c0\uc785\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ubc18\ud658\ud558\ub294 \ud638\ucd9c\uc744 \ub9cc\ub4e4 \uc218 \uc788\uac8c \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>1.6.0\ubd80\ud130\ub294 \uc774\uc804\uc5d0 \uae08\uc9c0\ub41c \ud638\ucd9c\uc744 \uc218\ud589\ud558\uae30 \uc704\ud574 <code>-Xunrestricted-builder-inference<\/code>\ub97c \uc9c0\uc815\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. <code>-Xenable-builder-inference<\/code> \ucef4\ud30c\uc77c\ub7ec \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \uc774\uc81c <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/-builder-inference\/\" target=\"_blank\" rel=\"noopener\"><code>@BuilderInference<\/code><\/a> \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc801\uc6a9\ud558\uc9c0 \uc54a\uace0 \uace0\uc720\ud55c \uc77c\ubc18 \ube4c\ub354\ub97c \uc791\uc131\ud560 \uc218 \uc788\uc73c\uba70 \uc77c\ubc18 \ud0c0\uc785 \ucd94\ub860\uc73c\ub85c \ud0c0\uc785 \uc815\ubcf4\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\uc5d0 \ube4c\ub354 \ucd94\ub860\uc744 \uc790\ub3d9\uc73c\ub85c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc774\uc804 API \ubc84\uc804\uc744 \ub354 \uc624\ub798 \uc9c0\uc6d0<\/h2>\n<p>Kotlin 1.6.0\ubd80\ud130 \uc774\uc81c \ub450 \uac1c\uac00 \uc544\ub2c8\ub77c \uc138 \uac1c\uc758 \uc774\uc804 API \ubc84\uc804(\ud604\uc7ac \uc548\uc815\ud654 \ubc84\uc804 \ud3ec\ud568)\uc744 \uac1c\ubc1c\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \uc5ec\uae30\uc5d0\ub294 API \ubc84\uc804 1.3, 1.4, 1.5 \ubc0f 1.6\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4.<\/p>\n<h1 id=\"jvm\">Kotlin\/JVM<\/h1>\n<p><strong>\ub7f0\ud0c0\uc784 \ubcf4\uc874 \uae30\uac04\uc774 \uc788\ub294 \ubc18\ubcf5 \uac00\ub2a5\ud55c \uc5b4\ub178\ud14c\uc774\uc158.<\/strong> <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/java\/annotations\/repeating.html\" target=\"_blank\" rel=\"noopener\">Java 8<\/a>\uacfc \uac19\uc774 Kotlin\uc5d0\ub294 \ubc18\ubcf5 \uac00\ub2a5\ud55c \uc5b4\ub178\ud14c\uc774\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4. Kotlin 1.6\uc5d0\uc11c\ub294 \uc774 \uae30\ub2a5\uc774 Java\uc640 \ud638\ud658\ub418\uba70 <code>@kotlin.annotation.Repeatable<\/code>\uc740 \uc774\uc81c \ubaa8\ub4e0 \ubcf4\uc874\uc744 \ud5c8\uc6a9\ud558\uace0 \uc5b4\ub178\ud14c\uc774\uc158\uc744 Kotlin\uacfc Java \ubaa8\ub450\uc5d0\uc11c \ubc18\ubcf5 \uac00\ub2a5\ud558\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \ub610\ud55c Java\uc758 \ubc18\ubcf5 \uac00\ub2a5\ud55c \uc5b4\ub178\ud14c\uc774\uc158\uc774 Kotlin\uc5d0\uc11c\ub3c4 \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<\/p>\n<h1 id=\"native\">Kotlin\/Native<\/h1>\n<p>\uc774\uc81c <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/try-the-new-kotlin-native-memory-manager-development-preview\/\"><strong>\uc0c8\ub85c\uc6b4 Kotlin\/Native \uba54\ubaa8\ub9ac \uad00\ub9ac\uc790<\/strong><\/a>\uc758 \uc2e4\ud5d8 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc744 \ud1b5\ud574 \uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc77c\uad00\ub41c \uac1c\ubc1c\uc790 \uacbd\ud5d8\uc744 \uc81c\uacf5\ud55c\ub2e4\ub294 \ubaa9\ud45c\uc5d0 \ud55c \uac78\uc74c \ub354 \uac00\uae4c\uc774 \ub2e4\uac00\uac00\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc989, \uc0c8\ub85c\uc6b4 \uba54\ubaa8\ub9ac \uad00\ub9ac\uc790\uac00 \uc2a4\ub808\ub4dc \uac04\uc758 \uac1d\uccb4 \uacf5\uc720\uc5d0 \ub300\ud55c \uae30\uc874 \uc81c\ud55c\uc744 \uc5c6\uc560\uace0, \uac1c\ubc1c\uc790\uac00 \ud2b9\ubcc4\ud788 \uad00\ub9ac\ud558\uac70\ub098 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ucd94\uac00\ud560 \ud544\uc694 \uc5c6\uc774 \uc548\uc804\ud558\uace0 \ub204\uc218\uac00 \uc804\ud600 \uc5c6\ub294 \ub3d9\uc2dc \ud504\ub85c\uadf8\ub798\ubc0d\uc758 \uae30\ubcf8\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c Kotlin\/Native\uac00 <strong>Xcode 13\uc744 \uc9c0\uc6d0<\/strong>\ud558\ubbc0\ub85c Xcode\ub97c \uc790\uc720\ub86d\uac8c \uc5c5\ub370\uc774\ud2b8\ud558\uace0 Kotlin \ud504\ub85c\uc81d\ud2b8 \uc791\uc5c5\uc744 \uacc4\uc18d \uc774\uc5b4\uac08 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p><strong>\ubaa8\ub4e0 \ud638\uc2a4\ud2b8\uc5d0\uc11c Windows \ub300\uc0c1 \ucef4\ud30c\uc77c.<\/strong> Kotlin\/Native\ub97c \uc9c0\uc6d0\ud558\ub294 \ubaa8\ub4e0 \ud638\uc2a4\ud2b8\uc5d0\uc11c Windows \ub300\uc0c1 <code>mingwX64<\/code> \ubc0f <code>mingwX86<\/code>\uc744 \ucef4\ud30c\uc77c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Kotlin\/Native\uc5d0\uc11c \ub0b4\ubd80\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 <strong>LLVM \uc885\uc18d \uc694\uc18c\ub97c \uac1c\ud3b8<\/strong>\ud588\uc2b5\ub2c8\ub2e4. \uadf8 \uacb0\uacfc, LLVM \ubc84\uc804\uc774 11.1.0\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub418\uace0 \uc885\uc18d \uc694\uc18c\uc758 \ud06c\uae30\uac00 \uc904\uc5c8\uc73c\uba70, \uc774\uc640 \ud568\uaed8 \uba87 \uac00\uc9c0 \uc774\uc810\uc774 \uc0dd\uacbc\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>JVM \ubc0f JS IR \ubc31\uc5d4\ub4dc\ub97c \ud3ec\ud568\ud55c \ud1b5\ud569 \ucef4\ud30c\uc77c\ub7ec \ud50c\ub7ec\uadf8\uc778 ABI<\/strong>. Kotlin\/Native\uc6a9\uc73c\ub85c JVM \ubc0f JS IR \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \uc784\ubca0\ub4dc \uac00\ub2a5\ud55c \ucef4\ud30c\uc77c\ub7ec jar\ub97c \uc774\uc81c Kotlin Multiplatform Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c Native \ubc0f \uae30\ud0c0 \uc9c0\uc6d0\ub418\ub294 \ud50c\ub7ab\ud3fc\uc5d0 \ub300\ud574 \ub3d9\uc77c\ud55c \ucef4\ud30c\uc77c\ub7ec \ud50c\ub7ec\uadf8\uc778 \uc544\ud2f0\ud329\ud2b8\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h1 id=\"js\">Kotlin\/JS<\/h1>\n<p>\uc778\ud130\ub137 \uc5f0\uacb0\uc774 \uc5c6\ub294 \uc11c\ubc84\uc5d0\uc11c \ube4c\ub4dc\ud558\uae30 \uc704\ud574 \uc774\uc81c Kotlin\/JS \ud504\ub85c\uc81d\ud2b8\ub97c \uc704\ud55c Node.js \ubc0f Yarn \ub2e4\uc6b4\ub85c\ub4dc\ub97c \ube44\ud65c\uc131\ud654\ud558\uace0 \ud638\uc2a4\ud2b8\uc5d0 \uc774\ubbf8 \uc124\uce58\ub41c \uc778\uc2a4\ud134\uc2a4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h1 id=\"kover\">Kover<\/h1>\n<p>\uccab \ub9b4\ub9ac\uc2a4 \uc774\ud6c4 \ucf54\ub4dc \ucee4\ubc84\ub9ac\uc9c0\ub97c \uc815\ud655\ud788 \uce21\uc815\ud558\ub294 \uc77c\uc774 \uc219\uc81c\ub85c \ub0a8\uc544 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. JaCoCo\uc640 \uac19\uc740 \uc77c\ubd80 \ud6cc\ub96d\ud55c \ub3c4\uad6c\ub294 Kotlin \ucf54\ub4dc\uc640\ub294 \uc798 \uc791\ub3d9\ud558\uc9c0\ub9cc Gradle \ud234\uccb4\uc778 \ubc0f \uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc640\ub294 \uc644\uc804\ud788 \ud1b5\ud569\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ubc88 Kotlin \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uccab \ubc1c\uc744 \ub0b4\ub51b\uc5c8\uc2b5\ub2c8\ub2e4. Kotlin\/JVM \ucef4\ud30c\uc77c\ub7ec\ub85c \ube4c\ub4dc\ub41c Kotlin \ucf54\ub4dc\uc758 \ucf54\ub4dc \ucee4\ubc84\ub9ac\uc9c0\ub97c \uce21\uc815\ud558\ub294 \uc0c8\ub85c\uc6b4 Gradle \ud50c\ub7ec\uadf8\uc778\uc778 Kover\ub97c \ub9cc\ub098\ubcf4\uc138\uc694. \uc544\uc9c1\uc740 \ucd08\uae30 \uac1c\ubc1c \ub2e8\uacc4\ub85c \uc2e4\ud5d8\uc801 \uc218\uc900\uc5d0 \uc788\uc73c\ub2c8 \uc774\uc5d0 \ub300\ud55c \uc758\uacac\uc744 <a class=\"ek-link\" href=\"https:\/\/github.com\/Kotlin\/kotlinx-kover\/issues\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\ub85c \ubcf4\ub0b4\uc8fc\uc2dc\uba74 \uac10\uc0ac\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/youtu.be\/jNu5LY9HIbw\" target=\"_blank\" rel=\"noopener\">\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 Kover \ub3d9\uc601\uc0c1\uc744 \uc2dc\uccad\ud558\uc138\uc694<\/a>.<\/p>\n<h1 id=\"standard-library\">\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac<\/h1>\n<p>Kotlin 1.6.0\uc740 <a class=\"ek-link\" href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46785\" target=\"_blank\" rel=\"noopener\"><code>readLine()<\/code> \ub4a4\uc758 <code>!!<\/code>\ub97c \uc81c\uac70<\/a>\ud558\uace0, <code>typeOf()<\/code>\ub97c \uc548\uc815\ud654\ud558\uba70, <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46784\" target=\"_blank\" rel=\"noopener\">\uc548\uc815\ud654\ub41c Duration API\ub97c \uc81c\uacf5<\/a>\ud568\uc73c\ub85c\uc368 stdlib \ub85c\ub4dc\ub9f5\uc758 \uc138 \ub2e8\uacc4\ub97c \ub9c8\ubb34\ub9ac\ud588\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ub2e4\uc74c stdlib \ud568\uc218\ub3c4 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noopener\">\uc548\uc815\ud654<\/a> \ub2e8\uacc4\ub85c \uc2b9\uaca9\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\uceec\ub809\uc158 \ube4c\ub354<\/li>\n<li>\uc815\uc218\uc5d0 \ub300\ud55c \ube44\ud2b8 \ud68c\uc804 \uc5f0\uc0b0<\/li>\n<li>\ubb38\uc790\uc5f4\uc744 \uc2dc\ud000\uc2a4\ub85c \ubd84\ud560\ud558\ub294 \uc815\uaddc\uc2dd \ud568\uc218<\/li>\n<\/ul>\n<p>\ub610\ud55c \uc911\uc704 \ud45c\uae30\ubc95\uc73c\ub85c <code>compareTo<\/code>\ub97c \ud638\ucd9c\ud558\ub294 \uae30\ub2a5\uc744 \ucd94\uac00\ud558\uace0 JVM \ubc0f JS\uc5d0\uc11c <code>replace()<\/code> \ud568\uc218\ub97c \uc77c\uad00\ub418\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\n<div class=\"wp-block-embed__wrapper\"><iframe loading=\"lazy\" title=\"1.6\uc5d0\uc11c\uc758 Kotlin \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubcc0\uacbd \uc0ac\ud56d\" src=\"https:\/\/www.youtube.com\/embed\/GWWFCyfNGFs?feature=oembed\" width=\"500\" height=\"281\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/figure>\n<h2>\ud45c\uc900 \uc785\ub825\uc744 \uc704\ud55c \uc0c8\ub85c\uc6b4 \ud568\uc218<\/h2>\n<p>Kotlin 1.6.0\uc5d0\uc11c\ub294 \ud45c\uc900 \uc785\ub825\uc5d0\uc11c \ud55c \uc904\uc744 \uc77d\uc740 \ud6c4 null\uc774 \uc544\ub2cc \uc5b4\uc124\uc158 \uc5f0\uc0b0\uc790 <code>!!<\/code>\ub97c \uc0ac\uc6a9\ud560 \ud544\uc694\uac00 \uc5c6\ub3c4\ub85d \ud558\uc5ec \ucd08\ubcf4\uc790\uc758 \ud559\uc2b5 \uacbd\ud5d8\uc744 \uac1c\uc120\ud558\uace0 Kotlin \uad50\uc721\uc744 \uc218\uc6d4\ud558\uac8c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucf58\uc194\uc5d0\uc11c \uc77d\uae30\uc6a9 \ud568\uc218\uac00 \uc0c8\ub86d\uac8c \uc81c\uacf5\ub418\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc740 \ud658\uacbd\uc774 \ub9c8\ub828\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>readln()<\/code>\uc740 EOF\uc5d0 \ub3c4\ub2ec\ud558\uba74 \uc608\uc678\ub97c \ub358\uc9d1\ub2c8\ub2e4. <code>!!<\/code> \uc5f0\uc0b0\uc790\ub85c <code>null<\/code>\uc5d0 \ub300\ud55c <code>readLine()<\/code>\uc758 \uacb0\uacfc\ub97c \ud655\uc778\ud558\ub294 \ub300\uc2e0 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.<\/li>\n<li>\uc0c8\ub85c\uc6b4 <code>readlnOrNull()<\/code>\uc740 <code>null<\/code>\uc744 \ubc18\ud658\ud558\ub294 \ub300\uccb4 \ud568\uc218\uc785\ub2c8\ub2e4. \uc774\uc804\uc758 <code>readLine()<\/code>\uacfc \uc791\ub3d9\ud558\ub294 \ubc29\uc2dd\uc774 \ub3d9\uc77c\ud558\uc9c0\ub9cc \uc774\ud574\ud558\uae30 \uc26c\uc6b4 \uc774\ub984\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc774\ub7ec\ud55c \ud568\uc218\ub97c \uc774\uc81c JVM \ubc0f Native\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\uc5d0 \ub300\ud55c \uba85\uba85 \uaddc\uce59\uc774 \uc774\uc81c <code>println()<\/code>\uc758 \uacbd\uc6b0\uc640 \uc77c\uce58\ud558\ubbc0\ub85c, \ud2b9\ud788 \uc2e0\uaddc \uc0ac\uc6a9\uc790\uc758 \ud63c\ub3d9\uc744 \uc904\uc774\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">fun main() {\n    println(\"Input two integer numbers each on a separate line\")\n    val num1 = readln().toInt()\n    val num2 = readln().toInt()\n    println(\"The sum of $num1 and $num2 is ${num1 + num2}\")\n}\n<\/pre>\n<h2>\uc548\uc815\ud654\ub41c Duration API<\/h2>\n<p>\uc5ec\ub7ec\ubd84\uc758 \uc758\uacac \ub355\ubd84\uc5d0 Duration API\ub97c \uc548\uc815\ud654 \ub2e8\uacc4\ub85c \uc9c4\ud589\ud558\uace0 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46784\" target=\"_blank\" rel=\"noopener\">\ud574\ub2f9 \ub85c\ub4dc\ub9f5 \ud56d\ubaa9<\/a>\uc744 \uc644\ub8cc\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uac00\ub3c5\uc131\uc774 \ub192\uc544\uc9c4 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.time\/-duration\/to-string.html\" target=\"_blank\" rel=\"noopener\"><code>Duration.toString()<\/code><\/a> \ucd9c\ub825, 1.5.30\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc73c\ub85c \uc81c\uacf5\ub41c <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#standard-library\" target=\"_blank\" rel=\"noopener\">String\uc758 Duration \ubd84\uc11d\uc744 \uc704\ud55c \uc0c8\ub85c\uc6b4 \ud568\uc218<\/a>\uc640 \ub354\ubd88\uc5b4 Duration API\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \ubcc0\uacbd \uc0ac\ud56d\uc774 \uc801\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\uac12\uc774 \uc798\ub9ac\ub294 \uac83\uc744 \ubc29\uc9c0\ud558\uae30 \uc704\ud574 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.time\/-duration\/to-components.html\" target=\"_blank\" rel=\"noopener\"><code>toComponents<\/code><\/a> \ud568\uc218\uc758 <code>days<\/code> \uad6c\uc131 \uc694\uc18c\uc5d0 <code>Int<\/code> \ub300\uc2e0 <code>Long<\/code> \ud0c0\uc785\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/li>\n<li><em><code>DurationUnit<\/code> <\/em>\uc5f4\uac70\ud615\uc740 \uc774\uc81c \ud0c0\uc785 \ubcc4\uce6d\uc774 \uc544\ub2d9\ub2c8\ub2e4. JVM\uc5d0\uc11c <em>j<code>ava.util.concurrent.TimeUnit<\/code><\/em>\uc758 \ud0c0\uc785 \ubcc4\uce6d\uc73c\ub85c \uc774 \uc5f4\uac70\ud615\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\ub294 \uc5c6\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ucee4\ubba4\ub2c8\ud2f0\uc758 \uc758\uacac\uc744 \ubc18\uc601\ud558\uc5ec <code>Int.seconds<\/code>\uc640 \uac19\uc740 \ud655\uc7a5 \ud504\ub85c\ud37c\ud2f0\ub97c \ub2e4\uc2dc \ubcf5\uc6d0\ud588\uc2b5\ub2c8\ub2e4. \uc801\uc6a9 \ubc94\uc704\ub97c \uc81c\ud55c\ud558\uae30 \uc704\ud574 Duration \ud074\ub798\uc2a4\uc758 \ucef4\ud328\ub2c8\uc5b8\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\">import kotlin.time.Duration.Companion.seconds\n\nfun main() {\n\/\/sampleStart\n    val duration = 5000.seconds\n    println(\"There are ${duration.inWholeMinutes} minutes in ${duration.inWholeHours} hours\")\n\/\/sampleEnd\n}\n<\/pre>\n<h2>\uc548\uc815\ud654\ub41c <code>typeOf()<\/code><\/h2>\n<p>Kotlin 1.6.0\uc5d0\uc11c\ub294 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.reflect\/type-of.html\" target=\"_blank\" rel=\"noopener\"><code>typeOf()<\/code><\/a>\uac00 <a href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noopener\">\uc548\uc815\ud654<\/a> \ub2e8\uacc4\ub85c \ub118\uc5b4\uc654\uc73c\uba70 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-45396\" target=\"_blank\" rel=\"noopener\">\ud574\ub2f9 \ub85c\ub4dc\ub9f5 \ud56d\ubaa9<\/a>\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/06\/kotlin-1-3-40-released\/\">1.3.40<\/a>\ubd80\ud130 JVM \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uc2e4\ud5d8\uc801\uc778 API\ub85c \uc81c\uacf5\ub418\uc5c8\ub358 <code>typeOf()<\/code>\ub97c \uc774\uc81c \ubaa8\ub4e0 Kotlin \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc73c\uba70 \ucef4\ud30c\uc77c\ub7ec\uac00 \ucd94\ub860\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0 Kotlin \ud0c0\uc785\uc758 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.reflect\/-k-type\/#kotlin.reflect.KType\" target=\"_blank\" rel=\"noopener\"><code>KType<\/code><\/a> \ud45c\ud604\uc744 \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">inline fun &lt;reified T&gt; renderType(): String {\n    val type = typeOf&lt;T&gt;()\n    return type.toString()\n}\n\nfun main() {\n    val fromExplicitType = typeOf&lt;Int&gt;()\n    val fromReifiedType = renderType&lt;List&lt;Int&gt;&gt;()\n}\n<\/pre>\n<h2>\uceec\ub809\uc158 \ube4c\ub354 \uc548\uc815\ud654<\/h2>\n<p>Kotlin 1.6.0\uc5d0\uc11c\ub294 \uceec\ub809\uc158 \ube4c\ub354 \ud568\uc218\uc778 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.collections\/build-map.html\" target=\"_blank\" rel=\"noopener\"><code>buildMap()<\/code><\/a>, <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.collections\/build-list.html\" target=\"_blank\" rel=\"noopener\"><code>buildList()<\/code><\/a> \ubc0f <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.collections\/build-set.html\" target=\"_blank\" rel=\"noopener\"><code>buildSet()<\/code><\/a>\uc774 <a href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noopener\">\uc548\uc815\ud654<\/a> \ub2e8\uacc4\ub85c \uc9c4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ube4c\ub354\uc5d0\uc11c \ubc18\ud658\ub41c \uceec\ub809\uc158\uc744 \uc774\uc81c \uc77d\uae30 \uc804\uc6a9 \uc0c1\ud0dc\uc5d0\uc11c \uc9c1\ub82c\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc548\uc815\ud654\ub41c \uc815\uc218 \ube44\ud2b8 \ud68c\uc804 \uc5f0\uc0b0<\/h2>\n<p>Kotlin 1.6.0\uc5d0\uc11c\ub294 \uc9c0\uc815\ub41c \ube44\ud2b8 \uc218\ub9cc\ud07c \uc22b\uc790\uc758 2\uc9c4 \ud45c\ud604\uc744 \uc67c\ucabd \ub610\ub294 \uc624\ub978\ucabd\uc73c\ub85c \ud68c\uc804\ud558\ub294 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/rotate-left.html\" target=\"_blank\" rel=\"noopener\"><code>rotateLeft()<\/code><\/a> \ubc0f <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/rotate-right.html\" target=\"_blank\" rel=\"noopener\"><code>rotateRight()<\/code><\/a> \ud568\uc218\uac00 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noopener\">\uc548\uc815\ud654<\/a> \ub2e8\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\">fun main() {\n\/\/sampleStart\n    val number: Short = 0b10001\n    println(number.rotateRight(2).toString(radix = 2)) \/\/ 100000000000100\n    println(number.rotateLeft(2).toString(radix = 2))  \/\/ 1000100\n\/\/sampleEnd\n}\n<\/pre>\n<h2>\ubb38\uc790\uc5f4\uc744 \uc2dc\ud000\uc2a4\ub85c \ubd84\ud560\ud558\ub294 \uc815\uaddc\uc2dd \ud568\uc218 \uc548\uc815\ud654<\/h2>\n<p>Kotlin 1.6.0\uc5d0\uc11c\ub294 \ub610\ud55c \ubb38\uc790\uc5f4\uc744 \uc2dc\ud000\uc2a4\ub85c \ubd84\ud560\ud558\ub294 \uc815\uaddc \ud45c\ud604\uc2dd \ud568\uc218\uc778 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.text\/-regex\/split-to-sequence.html\" target=\"_blank\" rel=\"noopener\"><code>splitToSequence()<\/code><\/a>\uac00 \uc548\uc815\ud654 \ub2e8\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\">fun main(){\n\/\/sampleStart\n    val colorsText = \"green, red , brown&amp;blue, orange, pink&amp;green\"\n    val regex = \"[,\\\\s]+\".toRegex()\n    val mixedColor = regex.splitToSequence(colorsText)\n        .onEach { println(it) }\n        .firstOrNull { it.contains('&amp;') }\n    println(mixedColor) \/\/ \"brown&amp;blue\"\n\/\/sampleEnd\n}\n<\/pre>\n<h2>\uc911\uc704 \ud45c\uae30\ubc95\uc758 compareTo<\/h2>\n<p>\uc21c\uc11c \uc9c0\uc815 \ubaa9\uc801\uc73c\ub85c \ub450 \uac1d\uccb4\ub97c \ube44\uad50\ud558\uae30 \uc704\ud574 \uc911\uc704 \ud45c\uae30\ubc95\uc73c\ub85c <code>Comparable.compareTo<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud558\ub294 \uae30\ub2a5\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">class WrappedText(val text: String) : Comparable&lt;WrappedText&gt; {\n    override fun compareTo(other: WrappedText): Int =\n        this.text compareTo other.text\n}\n<\/pre>\n<h2>JVM \ubc0f JS\uc5d0\uc11c \uc77c\uad00\ub41c replace() \ubc0f replaceFirst()<\/h2>\n<p>Kotlin 1.6.0 \uc774\uc804\uc5d0\ub294 \ub300\uccb4 \ubb38\uc790\uc5f4\uc5d0 \uadf8\ub8f9 \ucc38\uc870\uac00 \ud3ec\ud568\ub41c \uacbd\uc6b0 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.text\/-regex\/replace.html\" target=\"_blank\" rel=\"noopener\"><code>replace()<\/code><\/a> \ubc0f <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.text\/-regex\/replace-first.html\" target=\"_blank\" rel=\"noopener\"><code>replaceFirst()<\/code><\/a> \uc815\uaddc\uc2dd \ud568\uc218\uac00 JVM \ubc0f JS\uc5d0\uc11c \ub2e4\ub974\uac8c \uc791\ub3d9\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c Kotlin\/JS\uc5d0\uc11c\uc758 \ub3d9\uc791\uc774 JVM\uc5d0\uc11c\uc758 \ub3d9\uc791\uacfc \uc77c\uce58\ud569\ub2c8\ub2e4.<\/p>\n<h1 id=\"compatibility\">\u200b\u200b\ud638\ud658\uc131<\/h1>\n<p>\ubaa8\ub4e0 \uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c, \uc774\uc804\uc5d0 \ubc1c\ud45c\ub418\uc5c8\ub358 \ubcc0\uacbd \uc0ac\ud56d\uc758 \uc9c0\uc6d0 \uc911\ub2e8 \uc8fc\uae30 \uc911 \uc77c\ubd80\uac00 Kotlin 1.6.0\uc5d0\uc11c \uc885\ub8cc\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc0ac\ub840\ub294 \uc5b8\uc5b4 \uc704\uc6d0\ud68c\uc5d0\uc11c \ubaa8\ub450 \uc2e0\uc911\ud558\uac8c \uac80\ud1a0\ud55c \ud6c4 <a href=\"https:\/\/kotlinlang.org\/docs\/compatibility-guide-16.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.6 \ud638\ud658\uc131 \uac00\uc774\ub4dc<\/a>\uc5d0 \ud45c\uc2dc\ub429\ub2c8\ub2e4. YouTrack\uc5d0\uc11c \uc774\ub7ec\ud55c \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc0b4\ud3b4\ubcfc \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h1 id=\"how-to-install\">Kotlin 1.6.0 \uc124\uce58 \ubc29\ubc95<\/h1>\n<p><a href=\"https:\/\/www.jetbrains.com\/idea\/download\/\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA<\/a> \ub610\ub294 <a href=\"https:\/\/developer.android.com\/studio\" target=\"_blank\" rel=\"noopener\">Android Studio<\/a>\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\ub294 \uacbd\uc6b0 IDE\uc5d0\uc11c \uc790\ub3d9\uc73c\ub85c Kotlin\uc744 1.6.0\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uac83\uc744 \uc81c\uc548\ud569\ub2c8\ub2e4. \ub610\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/releases.html#update-to-a-new-release\" target=\"_blank\" rel=\"noopener\">\uc774 \uc9c0\uce68<\/a>\uc744 \ub530\ub77c \uc9c1\uc811 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c IDE\uc758 \ucd5c\uc2e0 \ubc84\uc804\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec \uad11\ubc94\uc704\ud55c Kotlin \uc9c0\uc6d0\uc744 \ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.jetbrains.com\/idea\/download\/\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA<\/a> \u2013 \ub2e4\uc591\ud55c \ud50c\ub7ab\ud3fc\uc744 \uc704\ud55c Kotlin \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c \uc9c0\uc6d0<\/li>\n<li><a href=\"https:\/\/developer.android.com\/studio\" target=\"_blank\" rel=\"noopener\">Android Studio<\/a> \u2013&nbsp;Android \ubc0f \ud06c\ub85c\uc2a4 \ud50c\ub7ab\ud3fc \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c \uc9c0\uc6d0<\/li>\n<\/ul>\n<p>\ub610\ud55c kotlinx \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c <a href=\"https:\/\/kotlinlang.org\/releases.html#release-details\" target=\"_blank\" rel=\"noopener\">\ud638\ud658\ub418\ub294 \ubc84\uc804<\/a>\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud558\uace0 \uae30\uc874 \ud504\ub85c\uc81d\ud2b8\uc758 \ube4c\ub4dc \uc2a4\ud06c\ub9bd\ud2b8\uc5d0 Kotlin 1.6.0\uc744 \uc9c0\uc815\ud588\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694.<\/p>\n<p>\uba85\ub839\uc904 \ucef4\ud30c\uc77c\ub7ec\uac00 \ud544\uc694\ud55c \uacbd\uc6b0, <a class=\"ek-link\" href=\"https:\/\/github.com\/JetBrains\/kotlin\/releases\/tag\/v1.6.0\" target=\"_blank\" rel=\"noopener\">Github \ub9b4\ub9ac\uc2a4 \ud398\uc774\uc9c0<\/a>\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc138\uc694.<\/p>\n<h3>\ubb38\uc81c\uac00 \ubc1c\uc0dd\ud55c \uacbd\uc6b0:<\/h3>\n<ul>\n<li><a href=\"http:\/\/kotlinlang.slack.com\/\" target=\"_blank\" rel=\"noopener\">Slack<\/a>(<a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-slack-sign-up\" target=\"_blank\" rel=\"noopener\">\ucd08\ub300 \ubc1b\uae30<\/a>)\uc5d0\uc11c \ub3c4\uc6c0\ub9d0\uc744 \ucc3e\uc544\ubcf4\uc138\uc694.<\/li>\n<li>JetBrains \uc774\uc288 \ud2b8\ub798\ucee4\uc778 <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>\uc5d0 \ubcf4\uace0\ud574 \uc8fc\uc138\uc694<\/li>\n<\/ul>\n<div style=\"background-color: #f1f6fe; margin-bottom: 2px; padding: 5px; margin-right: 0%; text-align: left; min-height: px;\">\n<p>\ucd5c\uc2e0 Kotlin \uae30\ub2a5\uc5d0 \ub300\ud55c \ucd5c\uc2e0 \uc815\ubcf4\ub97c \ubc1b\uc544\ubcf4\uc138\uc694! \uc774 \uac8c\uc2dc\ubb3c\uc758 \uc624\ub978\ucabd\uc5d0 \uc788\ub294 \uc591\uc2dd\uc744 \uc791\uc131\ud558\uc2dc\uba74 Kotlin \uc5c5\ub370\uc774\ud2b8\ub97c \ubc1b\uc544\ubcf4\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<\/div>\n<h1>\uae30\ud0c0 \uc720\uc6a9\ud55c \uae00\uacfc \uc601\uc0c1<\/h1>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\" target=\"_blank\" rel=\"noopener\">Kotlin \ub85c\ub4dc\ub9f5<\/a><\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/youtu.be\/jNu5LY9HIbw\" target=\"_blank\" rel=\"noopener\">Kover \u2013 \ucf54\ub4dc \ucee4\ubc84\ub9ac\uc9c0 \ud50c\ub7ec\uadf8\uc778<\/a><\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/docs\/whatsnew16.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.6.0\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \ubb38\uc11c<\/a><\/li>\n<li><a class=\"ek-link\" href=\"https:\/\/youtu.be\/6jrmcfYdfvI\" target=\"_blank\" rel=\"noopener\">Kotlin 1.6.0\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 YouTube \ub3d9\uc601\uc0c1<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/compatibility-guide-16.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.6\uc758 \ud638\ud658\uc131 \uac00\uc774\ub4dc<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/\">Kotlin 1.5.30\uc774 \ucd9c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4!<\/a><\/li>\n<\/ul>\n<h1>YouTrack\uc5d0\uc11c \uac00\uc7a5 \uc5f4\uc131\uc801\uc73c\ub85c \ud65c\ub3d9\ud55c \uc774\uc288 \ubcf4\uace0\uc790&nbsp;<\/h1>\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20rnett\" target=\"_blank\" rel=\"noopener\">Ryan Nett<\/a>(48\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20hzsweers\" target=\"_blank\" rel=\"noopener\">Zac Sweers<\/a>(22\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20tgeng\" target=\"_blank\" rel=\"noopener\">Tianyu Geng<\/a>(18\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20zhelenskiy.1\" target=\"_blank\" rel=\"noopener\">zhelenskiy<\/a>(18\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20theosotr\" target=\"_blank\" rel=\"noopener\">Thodoris Sotiropoulos<\/a>(15\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20lblb636\" target=\"_blank\" rel=\"noopener\">AndroidDeveloperLB<\/a>(14\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20kotlinisland\" target=\"_blank\" rel=\"noopener\">Morgan, Bartholomew<\/a>(14\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20Mikhail.Naftal\" target=\"_blank\" rel=\"noopener\">Mikhail Naftal<\/a>(14\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20louis.cad\" target=\"_blank\" rel=\"noopener\">Louis CAD<\/a>(12\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20hfhbd\" target=\"_blank\" rel=\"noopener\">Philip Wedemann<\/a>(12\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20Turansky\" target=\"_blank\" rel=\"noopener\">Victor Turansky<\/a>(11\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20panell\" target=\"_blank\" rel=\"noopener\">Igor Wojda<\/a>(11\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20martinbonnin\" target=\"_blank\" rel=\"noopener\">Martin Bonnin<\/a>(11\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20postovalovya\" target=\"_blank\" rel=\"noopener\">Iaroslav Postovalov<\/a>(11\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20Fruxz\" target=\"_blank\" rel=\"noopener\">Cedric<\/a>(10\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20RinOrz\" target=\"_blank\" rel=\"noopener\">\u51db<\/a>(9\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20benwoodworth\" target=\"_blank\" rel=\"noopener\">Ben Woodworth<\/a>(8\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20him188\" target=\"_blank\" rel=\"noopener\">Tianyi Guan<\/a>(8\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20beigetangerine\" target=\"_blank\" rel=\"noopener\">Chris Povirk<\/a>(8\uac1c \uc774\uc288), <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/?q=project:KT,%20KTIJ%20created:%202021-05-05%20..%20*%20created%20by:%20aalbert\" target=\"_blank\" rel=\"noopener\">Alon Albert<\/a>(8\uac1c \uc774\uc288).<\/p>\n<h1>\uc678\ubd80 \uae30\uc5ec\uc790<\/h1>\n<p>\uc774 \ub9b4\ub9ac\uc2a4\uc5d0 \ud3ec\ud568\ub41c \ud480 \ub9ac\ud018\uc2a4\ud2b8\ub97c \uc81c\uacf5\ud574 \uc8fc\uc2e0 \ubaa8\ub4e0 \uae30\uc5ec\uc790\uaed8\ub3c4 \uac10\uc0ac\uc758 \ub9c8\uc74c\uc744 \uc804\ud569\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/pyos\" target=\"_blank\" rel=\"noopener\">Pyos<\/a>, <a href=\"https:\/\/github.com\/tgeng\" target=\"_blank\" rel=\"noopener\">Tianyu Geng<\/a>, <a href=\"https:\/\/github.com\/jsjeon\" target=\"_blank\" rel=\"noopener\">Jinseong Jeon<\/a>, <a href=\"https:\/\/github.com\/sfs\" target=\"_blank\" rel=\"noopener\">Steven Sch\u00e4fer<\/a>, <a href=\"https:\/\/github.com\/punzki\" target=\"_blank\" rel=\"noopener\">Mark Punzalan<\/a>, <a href=\"mailto:hungnv@google.com\">Hung Nguyen<\/a>, <a href=\"https:\/\/github.com\/madsager\" target=\"_blank\" rel=\"noopener\">Mads Ager<\/a>, <a href=\"https:\/\/github.com\/ting-yuan\" target=\"_blank\" rel=\"noopener\">Ting-Yuan Huang<\/a>, <a href=\"https:\/\/github.com\/gharrma\" target=\"_blank\" rel=\"noopener\">Matthew Gharrity<\/a>, <a href=\"https:\/\/github.com\/gavra0\" target=\"_blank\" rel=\"noopener\">Ivan Gavrilovic<\/a>, <a href=\"https:\/\/github.com\/scaventz\" target=\"_blank\" rel=\"noopener\">Xin Wang<\/a>, <a href=\"https:\/\/github.com\/ov7a\" target=\"_blank\" rel=\"noopener\">ov7a<\/a>, <a href=\"https:\/\/github.com\/neetopia\" target=\"_blank\" rel=\"noopener\">Jiaxiang Chen<\/a>, <a href=\"https:\/\/github.com\/yigit\" target=\"_blank\" rel=\"noopener\">Yigit Boyar<\/a>, <a href=\"https:\/\/github.com\/bingranl\" target=\"_blank\" rel=\"noopener\">Bingran<\/a>, <a href=\"https:\/\/github.com\/bracadabra\" target=\"_blank\" rel=\"noopener\">bracadabra<\/a>, <a class=\"ek-link\" href=\"mailto:stumpos@fb.com\">Steffi Stumpos<\/a>, <a class=\"ek-link\" href=\"https:\/\/github.com\/akuleshov7\" target=\"_blank\" rel=\"noopener\">Andrey Kuleshov<\/a>.<\/p>\n<p><em>\uc774 \uac8c\uc2dc\ubb3c\uc758 \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":964,"featured_media":202898,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/214657"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=214657"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/214657\/revisions"}],"predecessor-version":[{"id":214665,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/214657\/revisions\/214665"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/202898"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=214657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=214657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=214657"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=214657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}