{"id":196136,"date":"2021-10-28T03:57:31","date_gmt":"2021-10-28T02:57:31","guid":{"rendered":"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/"},"modified":"2021-10-28T03:57:35","modified_gmt":"2021-10-28T02:57:35","slug":"kotlin-1-5-30-released","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2021\/10\/kotlin-1-5-30-released\/","title":{"rendered":"Kotlin 1.5.30\uc774 \ucd9c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"},"content":{"rendered":"<p>Kotlin 1.5.30\uc740 Kotlin 1.6.0\uc73c\ub85c \ub118\uc5b4\uac00\uae30 \uc804\uc758 \ub9c8\uc9c0\ub9c9 \ucd94\uac00 \ub9b4\ub9ac\uc2a4\uc774\ubbc0\ub85c Kotlin 1.6.0\uc5d0\uc11c \ucd9c\uc2dc\ud560 \uc608\uc815\uc778 \ub9ce\uc740 \uc2e4\ud5d8\uc801\uc778 \uc5b8\uc5b4 \uae30\ub2a5\uacfc \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uae30\ub2a5\uc744 \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\ud574 \ubcf4\uace0 \uc758\uacac\uc744 \uc54c\ub824\uc8fc\uc138\uc694. \uc5ec\ub7ec\ubd84\uc758 \uc0dd\uac01\uc774 \uc815\ub9d0 \uc88b\uc740 \uacb0\uacfc\ub85c \uc774\uc5b4\uc9c8 \uc218\ub3c4 \uc788\uc73c\ub2c8\uae4c\uc694! \uc774\ub7ec\ud55c \uc2e4\ud5d8\uc801 \uae30\ub2a5\uc5d0\ub294 sealed <code>when<\/code> \uad6c\ubb38, \uc635\ud2b8\uc778 \uc694\uad6c \uc0ac\ud56d\uc5d0 \ub300\ud55c \ubcc0\uacbd, \uc5b4\ub178\ud14c\uc774\uc158 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ud654, <code>Duration<\/code> \ubc0f <code>Regex<\/code> stdlib API\uc758 \uac1c\uc120 \ub4f1\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Kotlin 1.5.30\uc744 \uc0ac\uc6a9\ud558\uba74 Apple \uc2e4\ub9ac\ucf58\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc9c0\uc6d0, Kotlin\/JS IR \ubc31\uc5d4\ub4dc\uc758 \ubca0\ud0c0 \uc2b9\uaca9, \uba40\ud2f0\ud50c\ub7ab\ud3fc \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uacf5\uc720\ub41c \ub124\uc774\ud2f0\ube0c \ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc9c0\uc815 <code>cinterop<\/code> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uae30\ub2a5, Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 Java \ud234\uccb4\uc778 \uc9c0\uc6d0 \ub4f1 \ub2e4\uc591\ud55c \uc774\uc810\uc744 \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Kotlin 1.5.30\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#how-to-install\">Kotlin 1.5.30\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8<\/a><\/p>\n<p>\uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 \uc774 \ub9b4\ub9ac\uc2a4\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uac1c\uad04\uc801\uc73c\ub85c \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>Sealed <code>when<\/code> \uad6c\ubb38, \uc0c1\uc704 \ud0c0\uc785\uc73c\ub85c\uc11c <code>suspend<\/code> \ud568\uc218 \uc9c0\uc6d0, \uc635\ud2b8\uc778 \uc694\uad6c \uc0ac\ud56d\uc5d0 \ub300\ud55c \ubcc0\uacbd\uc744 \ud3ec\ud568\ud55c <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#language\">\uc5b8\uc5b4 \uac1c\uc120<\/a>.<\/li>\n<li>\uacf5\uc720 \uae30\ubcf8 \ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc9c0\uc815 <code>cinterop<\/code> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uace0 \ucd9c\ub825 \ud615\uc2dd\uc73c\ub85c XCFrameworks\ub97c \uc9c0\uc6d0\ud558\ub294 \uae30\ub2a5\uc744 \ud3ec\ud568\ud55c <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#multiplatform\">\uba40\ud2f0\ud50c\ub7ab\ud3fc \uac1c\uc120<\/a>.<\/li>\n<li>\uc5b4\ub178\ud14c\uc774\uc158 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ud654 \ubc0f null \uac12 \uac00\ub2a5\uc131\uc744 \ud45c\uc2dc\ud558\ub294 \uc5b4\ub178\ud14c\uc774\uc158 \uc9c0\uc6d0\uc758 \uad6c\uc131 \uac1c\uc120\uc744 \ud3ec\ud568\ud55c <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#kotlin-jvm\">Kotlin\/JVM \uac1c\uc120 \uc0ac\ud56d<\/a>.<\/li>\n<li>Apple \uc2e4\ub9ac\ucf58\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc9c0\uc6d0 \ubc0f CocoaPods Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0 \ub300\ud55c Kotlin DSL \uac1c\uc120 \ub4f1\uc758 <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#kotlin-native\">Kotlin\/Native \uac1c\uc120 \uc0ac\ud56d<\/a>.<\/li>\n<li>JS IR \ubc31\uc5d4\ub4dc\uc758 \ubca0\ud0c0 \uc2b9\uaca9 \ubc0f \uc0c8 \ubc31\uc5d4\ub4dc\uc5d0 \ub300\ud55c \ub514\ubc84\uadf8 \uacbd\ud5d8 \uac1c\uc120\uc744 \ud3ec\ud568\ud55c <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#kotlin-js\">Kotlin\/JS IR \uac1c\uc120 \uc0ac\ud56d<\/a>.<\/li>\n<li>Java \ud234\uccb4\uc778 \uc9c0\uc6d0 \ubc0f Kotlin \ub370\ubaac\uc758 JVM \uc778\uc218\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc124\uc815\ud558\ub294 \ub354 \uac04\ud3b8\ud55c \ubc29\ubc95 \ub4f1\uc758 <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#gradle\">Gradle \uac1c\uc120 \uc0ac\ud56d<\/a>.<\/li>\n<li><code>Duration<\/code> \ubc0f <code>Regex<\/code> API\uc5d0 \ub300\ud55c <a class=\"ek-link\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/08\/kotlin-1-5-30-released\/#stdlib\">\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uac1c\uc120 \uc0ac\ud56d<\/a>.<\/li>\n<\/ul>\n<p>\u00a0<\/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=\"Kotlin 1.5.30\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\" src=\"https:\/\/www.youtube.com\/embed\/rNbb3A9IdOo?feature=oembed\" width=\"500\" height=\"281\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/figure>\n<h2>Kotlin 1.5.30\uc73c\ub85c \uc790\ub3d9 \uc5c5\ub370\uc774\ud2b8<\/h2>\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\/08\/kotlin-1-5-30-released\/#how-to-install\">Kotlin 1.5.30 \uc124\uce58<\/a>\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<div style=\"background-color: #f1f6fe; margin-bottom: 2px; padding: 5px; margin-right: 0%; text-align: left; min-height: px;\">\n<p><b>\ucc38\uace0:<\/b> IntelliJ IDEA\uc758 \ucd5c\uc2e0 \ubc84\uc804\uc778 2021.2\ub294 Kotlin 1.5.30\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ubbf8 \uc5c5\uadf8\ub808\uc774\ub4dc\ud55c \uacbd\uc6b0 JetBrains <a href=\"https:\/\/www.jetbrains.com\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">Toolbox App<\/a>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac04\ud3b8\ud558\uac8c IntelliJ IDEA 2021.1\uc744 \uc124\uce58\ud558\uace0 \ud574\ub2f9 \ubc84\uc804\uc5d0\uc11c Kotlin 1.5.30\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 Kotlin 1.5.31 \ubc84\uadf8 \uc218\uc815 \ub9b4\ub9ac\uc2a4\uac00 \ub098\uc62c \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub824 \uc8fc\uc138\uc694.<\/p>\n<\/div>\n<h2 id=\"language\">\uc5b8\uc5b4<\/h2>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html#roadmap-details\" target=\"_blank\" rel=\"noopener\">Kotlin \ub85c\ub4dc\ub9f5<\/a>\uc5d0\ub294 sealed <code>when<\/code> \uad6c\ubb38\uc5d0 \ub300\ud55c \uc9c0\uc6d0 \ucd94\uac00, \uc635\ud2b8\uc778 \uc5b4\ub178\ud14c\uc774\uc158 \ub9b4\ub9ac\uc2a4, \ud0c0\uc785 \ucd94\ub860 \uac1c\uc120, \ube4c\ub354 \ucd94\ub860 \uc548\uc815\ud654\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4.\u00a0<\/p>\n<p>Kotlin 1.5.30\uc5d0\uc11c\ub294 1.6.0\uc73c\ub85c \ucd9c\uc2dc\ub420 \uc608\uc815\uc778 \uc774\ub7ec\ud55c \uae30\ub2a5\uc758 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc744 \uc81c\uacf5\ud558\uc5ec \ub85c\ub4dc\ub9f5\uc5d0\uc11c \ud55c \uac78\uc74c \ub354 \ub098\uc544\uac14\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>Sealed <code>when<\/code> \uad6c\ubb38<\/h3>\n<p>Sealed <code>when<\/code>\uc740 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-12380\" target=\"_blank\" rel=\"noopener\">YouTrack\uc5d0\uc11c 280\uac1c \uc774\uc0c1\uc758 \ud45c<\/a>\ub97c \uc5bb\uc744 \ub9cc\ud07c \uc624\ub7ab\ub3d9\uc548 \uae30\ub2e4\ub824\uc628 \uae30\ub2a5\uc785\ub2c8\ub2e4. <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#exhaustive-when-statements-for-sealed-and-boolean-subjects\" target=\"_blank\" rel=\"noopener\">1.5.30\uc5d0\uc11c \uc774 \uae30\ub2a5\uc744 \ud65c\uc131\ud654<\/a>\ud558\uba74 <code>when<\/code> \uad6c\ubb38 \uc911 \ud558\ub098\uac00 \uc644\uc804\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 Kotlin \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \uacbd\uace0\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc790\uccb4 \ud568\uc218\ub97c \ub3c4\uc785\ud560 \ud544\uc694 \uc5c6\uc774 \ucf54\ub4dc\ub97c \ub354 \uc548\uc804\ud558\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud574 \ubcf4\uace0 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-12380\" target=\"_blank\" rel=\"noopener\">\uc774 YouTrack \ud2f0\ucf13<\/a>\uc5d0 \ud53c\ub4dc\ubc31\uc744 \ub0a8\uaca8\uc8fc\uc138\uc694.\u00a0<\/p>\n<h3>\uc0c1\uc704 \ud0c0\uc785\uc73c\ub85c\uc11c <code>suspend<\/code> \ud568\uc218 \uc9c0\uc6d0<\/h3>\n<p>Kotlin 1.5.30\uc740 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#suspending-functions-as-supertypes\" target=\"_blank\" rel=\"noopener\">\uc77c\ubd80 \uc81c\ud55c<\/a>\uc774 \uc788\uc9c0\ub9cc <code>suspend<\/code> \ud568\uc218 \uc720\ud615\uc744 \uc0c1\uc704 \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc0ac\uc6a9\ud558\ub294 \uae30\ub2a5\uc744 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc73c\ub85c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774 \ubd80\ubd84\uc740 Kotlin \ucf54\ub8e8\ud2f4 \ub514\uc790\uc778\uc5d0\uc11c \ub204\ub77d\ub41c \ubd80\ubd84 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">class MyClass: suspend () -&gt; Unit {\n    override suspend fun invoke() { TODO() }\n}\n<\/pre>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#suspending-functions-as-supertypes\" target=\"_blank\" rel=\"noopener\">\uc774 \uae30\ub2a5\uc744 \ud65c\uc131\ud654<\/a>\ud558\uc5ec \uc0ac\uc6a9\ud574 \ubcf4\uace0 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/kt-18707\" target=\"_blank\" rel=\"noopener\">\uc774 YouTrack \ud2f0\ucf13<\/a>\uc5d0 \uc5ec\ub7ec\ubd84\uc758 \ud53c\ub4dc\ubc31\uc744 \ub0a8\uaca8\uc8fc\uc138\uc694.<\/p>\n<h3>\uc635\ud2b8\uc778 \uc694\uad6c \uc0ac\ud56d\uc758 \ubcc0\uacbd<\/h3>\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-22956\" target=\"_blank\" rel=\"noopener\">\uc635\ud2b8\uc778 \uc5b4\ub178\ud14c\uc774\uc158 \ub9b4\ub9ac\uc2a4<\/a>\ub97c \uc704\ud55c \ucd94\uac00\uc801\uc778 \uc900\ube44 \ub2e8\uacc4\ub85c Kotlin 1.5.30\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ub2e4\uc591\ud55c \ub300\uc0c1\uc5d0\uc11c \uc635\ud2b8\uc778 \uc694\uad6c \uc0ac\ud56d \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uace0 \uc120\uc5b8\ud558\uae30 \uc704\ud55c <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#changes-to-using-opt-in-requirement-annotations-with-different-targets\" target=\"_blank\" rel=\"noopener\">\uc0c8\ub85c\uc6b4 \uaddc\uce59<\/a>\uc744 \uc81c\uc2dc\ud569\ub2c8\ub2e4.\u00a0<\/li>\n<li>\uc2e4\ud5d8\uc801 API\ub97c \uc554\uc2dc\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \uc635\ud2b8\uc778\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ud568\uc218\uc758 \ubc18\ud658 \uc720\ud615\uc774 \uc2e4\ud5d8\uc801 API \uc694\uc18c\ub85c \ud45c\uc2dc\ub41c \uacbd\uc6b0, \uc120\uc5b8\uc774 \uc635\ud2b8\uc778\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \uc694\uad6c\ud558\ub294 \uac83\uc73c\ub85c \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0\uc5d0\ub3c4 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uc635\ud2b8\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">\/\/ Library code\n\n@RequiresOptIn(message = \"This API is experimental.\")\n@Retention(AnnotationRetention.BINARY)\n@Target(AnnotationTarget.CLASS)\nannotation class MyDateTime \/\/ Opt-in requirement annotation\n\n@MyDateTime\nclass DateProvider \/\/ A class requiring opt-in\n\n\/\/ Client code\n\n\/\/ Warning: experimental API usage\nfun createDateSource(): DateProvider { \/* ... *\/ }\n\nfun getDate(): Date {\n    val dateSource = createDateSource() \/\/ Also warning: experimental API usage\n    \/\/ ... \n}\n \nText\nXPath: \/pre[2]\n<\/pre>\n<p>\ubcc0\uacbd\ub41c \uc0ac\ud56d\uc744 \uccb4\ud5d8\ud574\ubcf4\uace0 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-22956\" target=\"_blank\" rel=\"noopener\">\uc774 YouTrack \ud2f0\ucf13<\/a>\uc5d0 \uc758\uacac\uc744 \ub0a8\uaca8\uc8fc\uc138\uc694.\u00a0<\/p>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/opt-in-requirements.html\" target=\"_blank\" rel=\"noopener\">\uc635\ud2b8\uc778 \uc694\uad6c \uc0ac\ud56d<\/a>\uc5d0 \ub300\ud574\uc11c\ub3c4 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.\u00a0<\/p>\n<h3>\uc7ac\uadc0\uc801 \uc81c\ub124\ub9ad \ud0c0\uc785\uc5d0 \ub300\ud55c \ud0c0\uc785 \ucd94\ub860 \uac1c\uc120\u00a0<\/h3>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#improvements-to-type-inference-for-recursive-generic-types\" target=\"_blank\" rel=\"noopener\">\uc7ac\uadc0\uc801 \uc81c\ub124\ub9ad \ud0c0\uc785\uc5d0 \ub300\ud55c \ud0c0\uc785 \ucd94\ub860<\/a>\uc744 \uc0ac\uc6a9\ud558\uba74 Kotlin 1.5.30 \ucef4\ud30c\uc77c\ub7ec\uac00 \uc7ac\uadc0\uc801 \uc81c\ub124\ub9ad\uc778 \uacbd\uc6b0\uc5d0 \ud574\ub2f9 \ud0c0\uc785 \ub9e4\uac1c\ubcc0\uc218\uc758 \uc0c1\uc704 \ubc14\uc6b4\ub4dc\uc5d0\ub9cc \uae30\ucd08\ud558\uc5ec \ud0c0\uc785 \uc778\uc218\ub97c \ucd94\ub860\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \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\">\/\/ Kotlin 1.5.20\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\/\/ Kotlin 1.5.30\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<h3>\ube4c\ub354 \ucd94\ub860 \uc81c\ud55c \uc81c\uac70\u00a0<\/h3>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#eliminating-builder-inference-restrictions\" target=\"_blank\" rel=\"noopener\">\ube4c\ub354 \ucd94\ub860 \uc81c\ud55c \uc81c\uac70<\/a> \uc0ac\uc6a9\uc744 \uc124\uc815\ud558\uba74 Kotlin 1.5.30\uc774 \ube4c\ub354 \ucd94\ub860 \uc81c\ud55c\uc744 \uc81c\uac70\ud569\ub2c8\ub2e4. \ube4c\ub354 \ucd94\ub860\uc774 \ucd94\ub860\ud560 \uc218 \uc788\ub294 \ud0c0\uc785 \uc815\ubcf4\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc744 \ubfd0\ub9cc \uc544\ub2c8\ub77c \uc5ec\uae30\uc5d0 <code>get<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uba85\uc2dc\uc801\uc73c\ub85c \uc9c0\uc815\ub41c \ud0c0\uc785 \uc778\uc218 \uc5c6\uc774 <code>buildList()<\/code>\uc758 \ub78c\ub2e4 \uc778\uc218 \ub0b4\uc5d0\uc11c <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.collections\/-list\/get.html\" target=\"_blank\" rel=\"noopener\"><code>get()<\/code><\/a>\uc744 \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 id=\"multiplatform\">Kotlin Multiplatform<\/h2>\n<p>Kotlin 1.5.30\uc5d0\ub294 Kotlin Multiplatform\uc5d0 \ub300\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uac1c\uc120 \uc0ac\ud56d\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#ability-to-use-custom-cinterop-libraries-in-shared-native-code\" target=\"_blank\" rel=\"noopener\">\uacf5\uc720 \uae30\ubcf8 \ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc9c0\uc815 <code>cinterop<\/code> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\ub294 \uae30\ub2a5<\/a>\uc744 \ud1b5\ud574 Kotlin\/Native\uc640 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \ud50c\ub7ab\ud3fc \uc885\uc18d \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub354\uc6b1 \ud3ed\ub113\uac8c \uacf5\uc720\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/li>\n<li>\ubaa8\ub4e0 Kotlin Multiplatform \ud504\ub85c\uc81d\ud2b8\uc758 \ucd9c\ub825 \ud615\uc2dd\uc73c\ub85c <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#support-for-xcframeworks\" target=\"_blank\" rel=\"noopener\">XCFrameworks \uc9c0\uc6d0<\/a>. XCFrameworks\ub294 \ub2e8\uc77c \ubc88\ub4e4\uc5d0\uc11c \ubaa8\ub4e0 \ub300\uc0c1 \ud50c\ub7ab\ud3fc \ubc0f \uc544\ud0a4\ud14d\ucc98\uc5d0 \ub300\ud55c \ub85c\uc9c1\uc744 \uc218\uc9d1\ud558\ub294 \ub3c4\uc6c0\uc744 \uc8fc\uba70, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 App Store\uc5d0 \uac8c\uc2dc\ud558\uae30 \uc804\uc5d0 \ubd88\ud544\uc694\ud55c \uc544\ud0a4\ud14d\ucc98\ub97c \uc81c\uac70\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#new-default-publishing-setup-for-android-artifacts\" target=\"_blank\" rel=\"noopener\">Android \uc544\ud2f0\ud329\ud2b8\uc5d0 \ub300\ud55c \uc0c8\ub85c\uc6b4 \uae30\ubcf8 \uac8c\uc2dc \uc124\uc815<\/a>. \uc774 \uc124\uc815\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \ubaa8\ub4e0 \ube4c\ub4dc \uc720\ud615(\uc608: <code>\ub514\ubc84\uadf8<\/code> \ub610\ub294 <code>\ub9b4\ub9ac\uc2a4<\/code>)\uacfc \ud638\ud658\ub429\ub2c8\ub2e4.\u00a0 1.5.30 \uc774\uc804\uc5d0\ub294 Android\uc6a9 \uba40\ud2f0\ud50c\ub7ab\ud3fc \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uac8c\uc2dc\ud560 \ub54c <code>maven-publish<\/code> Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0 \uc758\ud574 \uc0dd\uc131\ub41c <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/publishing_gradle_module_metadata.html\" target=\"_blank\" rel=\"noopener\">\uba54\ud0c0\ub370\uc774\ud130<\/a>\uc5d0 \ubaa8\ub4e0 \uac8c\uc2dc\ub41c Android \ubcc0\ud615\uc758 \ube4c\ub4dc \uc720\ud615 \uc18d\uc131\uc774 \ud3ec\ud568\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub85c \uc778\ud574 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc18c\ube44\uc790\uac00 \uc0ac\uc6a9\ud558\ub294 \ub3d9\uc77c\ud55c \ube4c\ub4dc \uc720\ud615\uacfc\ub9cc \ud638\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\u00a0<\/li>\n<\/ul>\n<h2 id=\"kotlin-jvm\">Kotlin\/JVM<\/h2>\n<p>Kotlin 1.5.30\uc5d0\uc11c Kotlin\/JVM\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#improved-nullability-annotation-support-configuration\" target=\"_blank\" rel=\"noopener\">null \uac12 \uac00\ub2a5\uc131\uc744 \ud45c\uc2dc\ud558\ub294 \uc5b4\ub178\ud14c\uc774\uc158 \uc9c0\uc6d0 \uad6c\uc131 \uac1c\uc120<\/a>. \ucef4\ud30c\uc77c\ub7ec\uac00 \ud2b9\uc815 \uc720\ud615\uc758 null \uac12 \uac00\ub2a5\uc131\uc744 \ud45c\uc2dc\ud558\ub294 \uc5b4\ub178\ud14c\uc774\uc158 \uc815\ubcf4\ub97c \uae30\ubc18\uc73c\ub85c null \uac12 \uac00\ub2a5\uc131 \ubd88\uc77c\uce58\ub97c \ubcf4\uace0\ud560\uc9c0 \uc5ec\ubd80\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#improved-nullability-annotation-support-configuration\" target=\"_blank\" rel=\"noopener\">\uc774 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc0ac\uc6a9<\/a>\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uace0 RxJava3 \uc5b4\ub178\ud14c\uc774\uc158\uc73c\ub85c \ud655\uc7a5\ub41c <a href=\"https:\/\/kotlinlang.org\/docs\/java-interop.html#nullability-annotations\" target=\"_blank\" rel=\"noopener\">null \uac12 \uac00\ub2a5\uc131\uc744 \ud45c\uc2dc\ud558\ub294 \uc5b4\ub178\ud14c\uc774\uc158 \uc804\uccb4 \uc9c0\uc6d0 \ubaa9\ub85d<\/a>\uc744 \ud655\uc778\ud558\uc138\uc694.\u00a0<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#instantiation-of-annotation-classes\" target=\"_blank\" rel=\"noopener\">\uc5b4\ub178\ud14c\uc774\uc158 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ud654<\/a>. <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#instantiation-of-annotation-classes\" target=\"_blank\" rel=\"noopener\">\uc774 \uae30\ub2a5\uc744 \ud65c\uc131\ud654<\/a>\ud558\uba74 \uc784\uc758\uc758 \ucf54\ub4dc\uc5d0\uc11c <a href=\"https:\/\/kotlinlang.org\/docs\/annotations.html\" target=\"_blank\" rel=\"noopener\">\uc5b4\ub178\ud14c\uc774\uc158 \ud074\ub798\uc2a4<\/a>\uc758 \uc0dd\uc131\uc790\ub97c \ud638\ucd9c\ud558\uc5ec \uacb0\uacfc \uc778\uc2a4\ud134\uc2a4\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 \uc5b4\ub178\ud14c\uc774\uc158 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uad6c\ud604\uc744 \uac00\ub2a5\ud558\uac8c \ud558\ub294 Java \uaddc\uce59\uacfc \ub3d9\uc77c\ud55c \uc0ac\uc6a9 \uc0ac\ub840\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4. <a class=\"ek-link\" href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/annotation-instantiation.md\" target=\"_blank\" rel=\"noopener\">\uc774 KEEP<\/a>\uc5d0\uc11c \uc5b4\ub178\ud14c\uc774\uc158 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ud654\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">annotation class InfoMarker(val info: String)\n\nfun processInfo(marker: InfoMarker) = ...\n\nfun main(args: Array&lt;String&gt;) {\n    if (args.size != 0)\n        processInfo(getAnnotationReflective(args))\n    else\n        processInfo(InfoMarker(\"default\"))\n}\n<\/pre>\n<h2 id=\"kotlin-native\">Kotlin\/Native<\/h2>\n<p>Kotlin 1.5.30\uc740 Kotlin\/Native\uc5d0 \ub300\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#apple-silicon-support\" target=\"_blank\" rel=\"noopener\">Apple Silicon\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc9c0\uc6d0<\/a>. \uc774\uc81c <a href=\"https:\/\/developer.apple.com\/documentation\/apple-silicon\/about-the-rosetta-translation-environment\" target=\"_blank\" rel=\"noopener\">Rosetta \ubcc0\ud658 \ud658\uacbd<\/a>\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0\ub3c4 Intel \uae30\ubc18 Mac\uc5d0\uc11c \uc9c0\uc6d0\ub418\ub294 \ubaa8\ub4e0 \ub300\uc0c1\uc5d0 \ub300\ud574 Apple Silicon \ud558\ub4dc\uc6e8\uc5b4\uc5d0\uc11c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ube4c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. 1.5.30\uc5d0 <code>macosArm64<\/code>, <code>iosSimulatorArm64<\/code>, <code>watchosSimulatorArm64<\/code> \ubc0f <code>tvosSimulatorArm64<\/code> \ub300\uc0c1\uc774 \uc0c8\ub86d\uac8c \ub3c4\uc785\ub418\uc5c8\uace0, \uc774\ub97c \ud1b5\ud574 Apple Silicon\uc5d0\uc11c \uae30\ubcf8\uc801\uc73c\ub85c Kotlin \ucf54\ub4dc\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#improved-kotlin-dsl-for-the-cocoapods-gradle-plugin\" target=\"_blank\" rel=\"noopener\">CocoaPods Gradle \ud50c\ub7ec\uadf8\uc778\uc6a9 Kotlin DSL \uac1c\uc120<\/a><em>. <\/em>Kotlin 1.5.30\uc740 Apple \ub300\uc0c1\uc5d0 \ub300\ud55c \ud504\ub808\uc784\uc6cc\ud06c \uc815\uc758\uc640 \ub3d9\uc77c\ud55c \uc0c8\ub85c\uc6b4 DSL \ud615\uc2dd\uc744 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \uc81c\uacf5\ud558\uc5ec CocoaPods \uad6c\uc131\uc744 \uac1c\uc120\ud569\ub2c8\ub2e4. \uc815\uc801 \ub610\ub294 \ub3d9\uc801 \uc720\ud615\uc778\uc9c0 \uc815\uc758\ud558\uace0, \uc885\uc18d\uc131 \ubc0f Bitcode \uc784\ubca0\ub529\uc758 \uba85\uc2dc\uc801 \ub0b4\ubcf4\ub0b4\uae30\ub97c \ud65c\uc131\ud654\ud558\uace0, \ub2e4\ub978 \uc635\uc158\ub3c4 \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#experimental-interoperability-with-swift-5-5-async-await\" target=\"_blank\" rel=\"noopener\">Swift 5.5 async\/await\uc640\uc758 \uc2e4\ud5d8\uc801 \uc0c1\ud638 \uc6b4\uc6a9\uc131.<\/a> Swift 5.5 \uc0c1\ud638 \uc6b4\uc6a9\uc131\uc758 \ud604\uc7ac \uc0c1\ud669\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uace0 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-47610\" target=\"_blank\" rel=\"noopener\">YouTrack \uc774\uc288<\/a>\uc5d0 \uc758\uacac\uc744 \ub0a8\uaca8\uc8fc\uc138\uc694.<\/li>\n<li>MinGW(Windows)\uc5d0 \ub300\ud55c \uac00\uc838\uc624\uae30 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \uc5c6\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#deprecation-of-linkage-against-dlls-without-import-libraries-for-mingw-targets\" target=\"_blank\" rel=\"noopener\">DLL \uc5f0\uacb0 \uc9c0\uc6d0 \uc911\ub2e8<\/a>. \uc131\ub2a5\uc774 \ub354 \uc6b0\uc218\ud558\uace0 \uae30\ud0c0 \uac1c\uc120 \uc0ac\ud56d\uc744 \ud3ec\ud568\ud55c <a href=\"https:\/\/lld.llvm.org\/\" target=\"_blank\" rel=\"noopener\">LLD \ub9c1\ucee4<\/a>\ub85c \uc804\ud658\ud55c \uacb0\uacfc\ub85c \uc774\ub7ec\ud55c \uc9c0\uc6d0 \uc911\ub2e8\uc774 \uc774\ub8e8\uc5b4\uc84c\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-47605\" target=\"_blank\" rel=\"noopener\">\uc774 YouTrack \uc774\uc288<\/a>\uc5d0\uc11c LLD \ub9c1\ucee4\ub85c\uc758 \uc804\ud658\uc5d0 \ub300\ud55c \uc758\uacac \ub610\ub294 \uc6b0\ub824 \uc0ac\ud56d\uc744 \uc790\uc720\ub86d\uac8c \uacf5\uc720\ud574 \uc8fc\uc138\uc694.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#improved-swift-objective-c-mapping-for-objects-and-companion-objects\" target=\"_blank\" rel=\"noopener\">\uac1d\uccb4 \ubc0f \ucef4\ud328\ub2c8\uc5b8 \uac1d\uccb4\uc5d0 \ub300\ud55c Swift\/Objective-C \ub9e4\ud551 \uac1c\uc120<\/a>. \uc774\uc81c <code>.shared<\/code> \ubc0f <code>.companion<\/code> \ud504\ub85c\ud37c\ud2f0\ub97c \uc0ac\uc6a9\ud558\uc5ec \uae30\ubcf8 iOS \uac1c\ubc1c\uc790\ub294 \ubcf4\ub2e4 \uc9c1\uad00\uc801\uc778 \ubc29\uc2dd\uc73c\ub85c \uac1d\uccb4 \ubc0f \ucef4\ud328\ub2c8\uc5b8 \uac1d\uccb4\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/li>\n<\/ul>\n<h2 id=\"kotlin-js\">Kotlin\/JS<\/h2>\n<p>Kotlin 1.5.30\uc740 Kotlin\/JS\uc5d0 \ub300\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#js-ir-compiler-backend-reaches-beta\" target=\"_blank\" rel=\"noopener\">JS IR \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\uac00 \uc774\uc81c \ubca0\ud0c0\ub85c \ub098\uc654\uc2b5\ub2c8\ub2e4<\/a>. \uc0c8 \ubc31\uc5d4\ub4dc\ub85c\uc758 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc744 \ub2e8\uc21c\ud654\ud558\uae30 \uc704\ud574 <a href=\"https:\/\/kotlinlang.org\/docs\/js-ir-migration.html\" target=\"_blank\" rel=\"noopener\">\ub9c8\uc774\uadf8\ub808\uc774\uc158 \uac00\uc774\ub4dc<\/a>\uc640 IntelliJ IDEA\uc5d0\uc11c \uc9c1\uc811 \ud544\uc694\ud55c \ubcc0\uacbd \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\ub3c4\ub85d \ud504\ub85c\uc138\uc2a4\ub97c \uc548\ub0b4\ud558\ub294<br \/>\uc0c8\ub85c\uc6b4 <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/17183-kotlin-js-inspection-pack\/\" target=\"_blank\" rel=\"noopener\">Kotlin\/JS Inspection Pack IDE \ud50c\ub7ec\uadf8\uc778<\/a>\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>JavaScript \uc18c\uc2a4 \ub9f5 \uc0dd\uc131 \ub355\ubd84\uc5d0 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#better-debugging-experience-for-applications-with-the-kotlin-js-ir-backend\" target=\"_blank\" rel=\"noopener\">Kotlin\/JS IR \ubc31\uc5d4\ub4dc\ub97c \uc0ac\uc6a9\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub514\ubc84\uadf8 \ud658\uacbd\uc774 \uac1c\uc120<\/a>\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ubaa8\ub4e0 JavaScript \ub514\ubc84\uac70\uc5d0\uc11c \uc801\uc808\ud55c \uc18c\uc2a4 \ucc38\uc870\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc911\ub2e8\uc810, \ub2e8\uacc4\ubcc4 \uc2e4\ud589 \ubc0f \uc77d\uae30 \uac00\ub2a5\ud55c \uc2a4\ud0dd \ucd94\uc801\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc758 \uc774\uc810\uc744 \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/kotlinlang.org\/docs\/js-debugging.html\" target=\"_blank\" rel=\"noopener\">Kotlin\/JS \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub514\ubc84\uadf8<\/a>\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.<\/li>\n<\/ul>\n<h2 id=\"gradle\">Gradle<\/h2>\n<p>Kotlin 1.5.30\uc740 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-45778\" target=\"_blank\" rel=\"noopener\">Kotlin Gradle \ud50c\ub7ec\uadf8\uc778 \uc0ac\uc6a9\uc790 \ud658\uacbd\uc744 \uac1c\uc120<\/a>\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \uae30\ub2a5\uc744 \ub3c4\uc785\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#support-for-java-toolchains\" target=\"_blank\" rel=\"noopener\">Java \ud234\uccb4\uc778 \uc9c0\uc6d0<\/a>. Gradle 6.7\uc5d0\ub294 \ud504\ub85c\uc81d\ud2b8 \ucef4\ud30c\uc77c\uc5d0 \uc0ac\uc6a9\ud560 JDK\ub97c \uc27d\uac8c \uc120\ud0dd\ud560 \uc218 \uc788\ub294 <a href=\"https:\/\/blog.gradle.org\/java-toolchains\" target=\"_blank\" rel=\"noopener\">Java \ud234\uccb4\uc778 \uc9c0\uc6d0<\/a>\uc774 \ub3c4\uc785\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ube4c\ub4dc \uc2a4\ud06c\ub9bd\ud2b8\uc5d0\uc11c \ud544\uc694\ud55c \ubc84\uc804\uc744 \uc120\uc5b8\ud558\uae30\ub9cc \ud558\uba74 Gradle\uc774 \ub098\uba38\uc9c0 \uc791\uc5c5\uc744 \uc218\ud589\ud558\uc5ec \ud638\uc2a4\ud2b8 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ud574\ub2f9 \ubc84\uc804\uc744 \ucc3e\uac70\ub098 \uc544\uc9c1 \uc5c6\ub294 \uacbd\uc6b0 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec \uc124\uce58\ud569\ub2c8\ub2e4. Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc740 Kotlin\/JVM \ucef4\ud30c\uc77c \uc791\uc5c5\uc744 \uc704\ud55c Java \ud234\uccb4\uc778\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. Gradle \ubc84\uc804 6.1-6.6\uc758 \uacbd\uc6b0 <a class=\"ek-link\" href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#ability-to-specify-jdk-home-with-useskotlinjavatoolchain-interface\" target=\"_blank\" rel=\"noopener\"><code>UsesKotlinJavaToolchain<\/code> \uc778\ud130\ud398\uc774\uc2a4<\/a>\ub97c \uc0ac\uc6a9\ud558\uc5ec JDK \ud648\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#easier-way-to-explicitly-specify-kotlin-daemon-jvm-arguments\" target=\"_blank\" rel=\"noopener\">Kotlin \ub370\ubaac JVM \uc778\uc218\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc9c0\uc815\ud558\ub294 \ub354 \uc26c\uc6b4 \ubc29\ubc95<\/a>. Kotlin \ub370\ubaac\uc5d0 \ub300\ud574 \uc544\ubb34 \uc9c0\uc815\ub3c4 \ud558\uc9c0 \uc54a\uc73c\uba74 Gradle \ub370\ubaac\uc5d0\uc11c \uc778\uc218\ub97c \uc0c1\uc18d\ud569\ub2c8\ub2e4. \uc774\uc81c \ud2b9\uc815 \uc791\uc5c5\uacfc Kotlin \ud655\uc7a5\uc5d0 \ub300\ud55c \uc778\uc218\ub97c <code>build.gradle.kts<\/code> \ub610\ub294 <code>gradle.properties<\/code>\uc5d0\uc11c \ud55c \uc904\ub85c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><code>build.gradle.kts<\/code><\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">kotlin {\n    kotlinDaemonJvmArgs = listOf(\"-Xmx486m\", \"-Xms256m\", \"-XX:+UseParallelGC\")\n}\n<\/pre>\n<p><code>gradle.properties<\/code><\/p>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-highlight-only=\"true\">kotlin.daemon.jvmargs = -Xmx486m -Xms256m -XX:+UseParallelGC\n<\/pre>\n<h2 id=\"stdlib\">\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac<\/h2>\n<p>Kotlin 1.5.30\uc5d0\uc11c\ub294 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 <code>Duration<\/code> \ubc0f <code>Regex<\/code> API\uac00 \uac1c\uc120\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>Duration API \uac1c\uc120 \uc0ac\ud56d<\/h3>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html#roadmap-details\" target=\"_blank\" rel=\"noopener\">\ub77c\uc774\ube0c\ub7ec\ub9ac \ub85c\ub4dc\ub9f5<\/a>\uc5d0 \ub098\ud0c0\ub0b8 \ubc14\uc640 \uac19\uc774 <a class=\"ek-link\" href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46784\" target=\"_blank\" rel=\"noopener\">Kotlin 1.6.0\uc5d0\uc11c Duration API\ub97c \uc548\uc815\ud654<\/a>\ud560 \uc608\uc815\uc785\ub2c8\ub2e4. \uc989, \uc774 API\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uace0 \ubcc0\uacbd\uc774 \ud544\uc694\ud55c \ubd80\ubd84\uc5d0 \ub300\ud55c \uc758\uacac\uc744 \uacf5\uc720\ud560 \uc218 \uc788\ub294 \uae30\ud68c\uac00 \uc774\ubc88\uc774 \ub9c8\uc9c0\ub9c9\uc785\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/issues\/190\" target=\"_blank\" rel=\"noopener\">\uc774 KEEP<\/a>\uc5d0 \uc758\uacac\uc744 \ub0a8\uaca8\uc8fc\uc2dc\uba74 \uac10\uc0ac\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Kotlin 1.5.30\uc740 API \uac1c\uc120 \uc0ac\ud56d\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. <code>Duration.toString()<\/code>\uc758 \ucd9c\ub825\uc774 \uc774\uc81c \ub354 \uc77d\uae30 \uc26c\uc6cc\uc84c\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, <code>Duration.minutes(920).toString()<\/code>\uc740 \uc774\uc804\uc758 <code>920m<\/code> \ub300\uc2e0 <code>15h 20m<\/code>\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc74c\uc218 \uae30\uac04 \uc55e\uc5d0 \uc774\uc81c \ube7c\uae30 \uae30\ud638(<code>-<\/code>)\uac00 \ubd99\uc73c\uba70 \uc5ec\ub7ec \uc694\uc18c\ub85c \uad6c\uc131\ub41c \uacbd\uc6b0 \uad04\ud638\ub85c \ubb36\uc785\ub2c8\ub2e4(<code>-12m<\/code> \ubc0f <code>-(1h 30m)<\/code>).<\/p>\n<p>\uc774 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html#standard-library\" target=\"_blank\" rel=\"noopener\">String\uc5d0\uc11c Duration \uad6c\ubb38\uc744 \ubd84\uc11d\ud558\uae30 \uc704\ud55c \uc0c8\ub85c\uc6b4 \uae30\ub2a5<\/a>\uc758 \ud14c\uc2a4\ud2b8 \ubc84\uc804\ub3c4 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>parse()<\/code>\ub294 Duration\uc758 <code>toString()<\/code> \ud615\uc2dd \ubb38\uc790\uc5f4\uc774\ub098 <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601#Durations\" target=\"_blank\" rel=\"noopener\">ISO 8601<\/a> \uae30\uac04\uc744 \ub098\ud0c0\ub0b4\ub294 \ubb38\uc790\uc5f4(\uc608: <code>toIsoString()<\/code> \ucd9c\ub825)\ub85c\ubd80\ud130 Duration \uac1d\uccb4\uc758 \uad6c\ubb38\uc744 \ubd84\uc11d\ud569\ub2c8\ub2e4.<\/li>\n<li><code>parseIsoString()<\/code>\uc740 ISO 8601 \uae30\uac04\uc744 \ub098\ud0c0\ub0b4\ub294 \ubb38\uc790\uc5f4\ub85c\ubd80\ud130 Duration \uac1d\uccb4\uc758 \uad6c\ubb38\uc744 \ubd84\uc11d\ud569\ub2c8\ub2e4.<\/li>\n<li><code>*OrNull()<\/code>\uc740 \ub450 \ud568\uc218 \ubaa8\ub450\uc5d0 \ub300\uc751\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-min-compiler-version=\"1.5.30\">import kotlin.time.Duration\nimport kotlin.time.ExperimentalTime\n\n@ExperimentalTime\nfun main() {\n\/\/sampleStart\n    val isoFormatString = \"PT1H30M\"\n    val defaultFormatString = \"1h 30m\"\n    println(Duration.parse(isoFormatString)) \/\/ \"1h 30m\"\n    println(Duration.parse(defaultFormatString)) \/\/ \"1h 30m\"\n\/\/sampleEnd\n}\n<\/pre>\n<h3>Regex API \uac1c\uc120 \uc0ac\ud56d<\/h3>\n<p>Kotlin 1.5.30\uc740 \uc815\uaddc \ud45c\ud604\uc2dd\uc744 \uc704\ud55c \uc0c8\ub85c\uc6b4 \uc2e4\ud5d8\uc801 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>matchesAt()<\/code>\ub294 \uc815\uaddc\uc2dd\uc774 \ubb38\uc790\uc5f4\uc758 \uc9c0\uc815\ub41c \uc704\uce58\uc5d0 \uc77c\uce58 \uc694\uc18c\ub97c \uac00\uc9c0\uace0 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<li><code>matchAt()<\/code>\ub294 \uc77c\uce58 \ud56d\ubaa9\uc774 \ubc1c\uacac\ub418\uba74 \uc774\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-min-compiler-version=\"1.5.30\">fun main(){\n\/\/sampleStart\n    val releaseText = \"Kotlin 1.5.30 is released!\"\n    val versionRegex = \"\\\\d[.]\\\\d[.]\\\\d+\".toRegex()\n    println(versionRegex.matchAt(releaseText, 0)) \/\/ \"null\"\n    println(versionRegex.matchAt(releaseText, 7)?.value) \/\/ \"1.5.30\"\n\/\/sampleEnd\n}\n<\/pre>\n<ul>\n<li><code>splitToSequence()<\/code>\ub294 <a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.text\/-regex\/split.html\" target=\"_blank\" rel=\"noopener\"><code>split()<\/code><\/a>\uc758 \uc9c0\uc5f0 \ub300\uc751\ud568\uc218\uc785\ub2c8\ub2e4. \uc8fc\uc5b4\uc9c4 \uc815\uaddc\uc2dd\uc758 \uc77c\uce58 \ud56d\ubaa9\uc744 \uc911\uc2ec\uc73c\ub85c \ubb38\uc790\uc5f4\uc744 \ubd84\ud560\ud558\uc9c0\ub9cc \uacb0\uacfc\ub97c <code>Sequence<\/code>\ub85c \ubc18\ud658\ud569\ub2c8\ub2e4. <code>CharSequence<\/code>\uc5d0\ub3c4 \uc720\uc0ac\ud55c \ud568\uc218\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" style=\"visibility: hidden; padding: 36px 0;\" data-min-compiler-version=\"1.5.30\">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 id=\"how-to-install\">Kotlin 1.5.30 \uc124\uce58 \ubc29\ubc95<\/h2>\n<p>\uc774\ubbf8 <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.5.30\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uac83\uc744 \uc81c\uc548\ud569\ub2c8\ub2e4. \ub610\ud55c <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.\u00a0<\/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\u00a0 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 \ubc84\uc804 1.5.30\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.5.30\" 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<h2>\ucd94\uac00 \ub9ac\uc18c\uc2a4 \uc77d\uae30 \ubc0f \uc2dc\uccad\ud558\uae30<\/h2>\n<ul>\n<li><a class=\"ek-link\" href=\"https:\/\/youtu.be\/rNbb3A9IdOo\" target=\"_blank\" rel=\"noopener\">Kotlin 1.5.30\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \ub3d9\uc601\uc0c1<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1530.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.5.30\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \ubb38\uc11c<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-1-5-20-released\/\">Kotlin 1.5.20 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">Kotlin 1.5.0 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\" target=\"_blank\" rel=\"noopener\">Kotlin \ub85c\ub4dc\ub9f5<\/a><\/li>\n<\/ul>\n<h2>\uc678\ubd80 \uae30\uc5ec\uc790 <img decoding=\"async\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/1f44f.png\" alt=\"&#x1f44f;\" \/><img decoding=\"async\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/1f44f.png\" alt=\"&#x1f44f;\" \/><img decoding=\"async\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/1f44f.png\" alt=\"&#x1f44f;\" \/><\/h2>\n<p>\uc774 \ub9b4\ub9ac\uc2a4\uc5d0 \ud3ec\ud568\ub41c \ud480 \ub9ac\ud018\uc2a4\ud2b8\ub97c \uc81c\uacf5\ud574 \uc8fc\uc2e0 \ubaa8\ub4e0 \uc678\ubd80 \uae30\uc5ec\uc790\uaed8\ub3c4 \uac10\uc0ac\uc758 \ub9c8\uc74c\uc744 \uc804\ud569\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/github.com\/jsjeon\" target=\"_blank\" rel=\"noopener\">Jinseong Jeon<\/a>, <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\/punzki\" target=\"_blank\" rel=\"noopener\">Mark Punzalan<\/a>, <a href=\"https:\/\/github.com\/madsager\" target=\"_blank\" rel=\"noopener\">Mads Ager<\/a>, <a href=\"https:\/\/github.com\/gavra0\" target=\"_blank\" rel=\"noopener\">Ivan Gavrilovic<\/a>, <a href=\"https:\/\/github.com\/sfs\" target=\"_blank\" rel=\"noopener\">Steven Sch\u00e4fer<\/a>, <a href=\"https:\/\/github.com\/knebekaizer\" target=\"_blank\" rel=\"noopener\">Vladimir Ivanov<\/a>, <a href=\"https:\/\/github.com\/hungvietnguyen\" target=\"_blank\" rel=\"noopener\">Hung Nguyen<\/a>, <a href=\"https:\/\/github.com\/gharrma\" target=\"_blank\" rel=\"noopener\">Matthew Gharrity<\/a>, <a href=\"https:\/\/github.com\/neetopia\" target=\"_blank\" rel=\"noopener\">Jiaxiang Chen<\/a>, <a href=\"https:\/\/github.com\/KvanTTT\" target=\"_blank\" rel=\"noopener\">Ivan Kochurkin<\/a>, <a href=\"https:\/\/github.com\/CommanderTvis\" target=\"_blank\" rel=\"noopener\">Iaroslav Postovalov<\/a>, <a href=\"https:\/\/github.com\/t-kameyama\" target=\"_blank\" rel=\"noopener\">Toshiaki Kameyama<\/a>, <a href=\"https:\/\/github.com\/Udinic\" target=\"_blank\" rel=\"noopener\">Udi Cohen<\/a>, <a href=\"https:\/\/github.com\/scaventz\" target=\"_blank\" rel=\"noopener\">Xin Wang<\/a>, <a href=\"https:\/\/github.com\/bracadabra\" target=\"_blank\" rel=\"noopener\">bracadabra<\/a><\/p>\n<p><em>\uac8c\uc2dc\ubb3c \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":175102,"comment_status":"open","ping_status":"closed","template":"","categories":[907],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/196136"}],"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=196136"}],"version-history":[{"count":5,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/196136\/revisions"}],"predecessor-version":[{"id":200103,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/196136\/revisions\/200103"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/175102"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=196136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=196136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=196136"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=196136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}