{"id":65456,"date":"2020-08-11T03:17:31","date_gmt":"2020-08-11T03:17:31","guid":{"rendered":"http:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=65456"},"modified":"2020-08-11T03:31:52","modified_gmt":"2020-08-11T03:31:52","slug":"kotlin-1-4-rc-released","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2020\/08\/kotlin-1-4-rc-released\/","title":{"rendered":"Kotlin 1.4.0-RC \ub9b4\ub9ac\uc988"},"content":{"rendered":"<p>Kotlin\uc758 \ub2e4\uc74c \ubc84\uc804\uae4c\uc9c0 \uc5bc\ub9c8 \uc548 \ub0a8\uc558\uc2b5\ub2c8\ub2e4! \ub2e4\uc74c \uc8fc\uc694 \ubc84\uc804\uc73c\ub85c \uacf5\uac1c\ub420 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc758 \ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4\uc778 Kotlin 1.4.0-RC\uac00 \ub9b4\ub9ac\uc988 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uae00\uc5d0\uc11c Kotlin 1.4.0-RC\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc744 \ud655\uc778\ud558\uace0 Kotlin 1.4.0 \uacf5\uc2dd \ucd9c\uc2dc \uc804 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/07\/Kotlin-1.4-RC_banners_Blogpost.png\" alt=\"\"><\/p>\n<p>\uc8fc\uc694 \ub9b4\ub9ac\uc2a4 \ubc84\uc804(<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-4-m1-released\/\">1.4-M1<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/06\/kotlin-1-4-m2-released\/\">1.4-M2<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/07\/kotlin-1-4-m3-is-out-standard-library-changes\/\">1.4-M3<\/a>)\uc744 \uc0ac\uc6a9\ud558\uace0 \ud53c\ub4dc\ubc31\uc744 \uacf5\uc720\ud558\uc5ec \uc774\ubc88 Kotlin \ubc84\uc804\uc774 \ud5a5\uc0c1\ub420 \uc218 \uc788\ub3c4\ub85d \uc9c0\uc6d0\ud574\uc8fc\uc2e0 \ubaa8\ub4e0 \ubd84\ub4e4\uaed8 \ud2b9\ubcc4\ud55c \uac10\uc0ac\ub97c \uc804\ud569\ub2c8\ub2e4!<\/p>\n<p>\uc774\ubc88 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 Kotlin 1.4.0-RC \uc2e0\uaddc \uae30\ub2a5 \ubc0f \ud575\uc2ec \uac1c\uc120 \uc0ac\ud56d\uc744 \uc911\uc810\uc801\uc73c\ub85c \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"#improved-gradle-kts-support\">\ud5a5\uc0c1\ub41c<code>*.gradle.kts<\/code> IDE \uc9c0\uc6d0<\/a>: \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131\uc758 \uba85\uc2dc\uc801 \ub85c\ub529 \ubc0f \uc624\ub958 \ubcf4\uace0 \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a href=\"#stdlib-default\">\uc774\uc81c \uae30\ubcf8\uc801\uc73c\ub85c \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc885\uc18d \uc694\uc18c\ub97c \ud3ec\ud568\ud558\ub294 \uc18c\uc2a4 \uc9d1\ud569<\/a>: \uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8 \ubc0f \ub2e8\uc77c \ud50c\ub7ab\ud3fc \ub300\uc0c1\uc758 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ubaa8\ub450 \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<\/li>\n<li><a href=\"#kotlin-native\">\uac04\uc18c\ud654\ub41c CocoaPods \uc885\uc18d \uc694\uc18c \uad00\ub9ac<\/a>.<\/li>\n<li><a href=\"#kotlin-js\">\uac1c\uc120\ub41c Kotlin\/JS \ud1b5\ud569<\/a>: npm \uc885\uc18d \uc694\uc18c, CSS , Gradle\uc758 Dukat, \ub514\ud3f4\ud2b8 \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\uc5d0\uc11c <code>@JsExport<\/code> \uc5b4\ub178\ud14c\uc774\uc158 \uc0ac\uc6a9 \uac00\ub2a5.<\/li>\n<li><a href=\"#kotlin-js-node\">Node.js API \ubc14\uc778\ub529 \ud14c\uc2a4\ud2b8 \ubc84\uc804<\/a>.<\/li>\n<li>\ucf54\ub8e8\ud2f4\uc744 \ub514\ubc84\uadf8\ud558\uace0 \uc2ec\uce35 \uc7ac\uadc0 \ud568\uc218\ub97c \uc815\uc758\ud558\ub294 \uc0c8\ub85c\uc6b4 \uae30\ub2a5. \uc774 \ub0b4\uc6a9\uc740 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/07\/kotlin-1-4-rc-debugging-coroutines\/\">\ubcc4\ub3c4\uc758 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a>\uc5d0\uc11c \ud655\uc778\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/li>\n<\/ul>\n<p><a name=\"improved-gradle-kts-support\"><\/a><\/p>\n<h2>\ud5a5\uc0c1\ub41c *.gradle.kts IDE \uc9c0\uc6d0<\/h2>\n<p><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/02\/improved-gradle-kts-ide-support\/\">Kotlin 1.3.70\uc5d0\uc11c \uc81c\uacf5\ub41c Gradle Kotlin DSL \uc2a4\ud06c\ub9bd\ud2b8(*.gradle.kts \ud30c\uc77c)\uc758 IDE \uc9c0\uc6d0<\/a>\uc744 \ub300\ud3ed \uac1c\uc120\ud558\uc600\uc73c\uba70 Kotlin 1.4.0-RC\uc5d0\uc11c\ub3c4 \uacc4\uc18d \uac1c\uc120\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc0c8 \ubc84\uc804\uc5d0 \ud3ec\ud568\ub41c \uae30\ub2a5\uc744 \uc544\ub798\uc5d0\uc11c \uc0b4\ud3b4\ubcf4\uc138\uc694.<\/p>\n<h3>\uc131\ub2a5 \uac1c\uc120\uc744 \uc704\ud574 \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \ub85c\ub4dc<\/h3>\n<p>\uc774\uc804\uc5d0\ub294 <code>build.gradle.kts<\/code>\uc758 <code>buildscript<\/code> \ub610\ub294 <code>plugins<\/code> \ube14\ub85d\uc5d0 \uc0c8 \ud50c\ub7ec\uadf8\uc778\uc744 \ucd94\uac00\ud558\uba74 \uc0c8 \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131\uc774 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0 \uc790\ub3d9\uc73c\ub85c \ub85c\ub4dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8 \ub2e4\uc74c\uc5d0, \uad6c\uc131\uc774 \uc801\uc6a9\ub41c \ud6c4\uc5d0\uc57c \uc0c8\ub85c \ucd94\uac00\ud55c \ud50c\ub7ec\uadf8\uc778\uc5d0 \ucf54\ub4dc \uc9c0\uc6d0\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc131\ub2a5 \uac1c\uc120\uc744 \uc704\ud574 \uc785\ub825 \uc2dc \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131\uc5d0 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc801\uc6a9\ud558\ub294 \uc790\ub3d9 \ub3d9\uc791\uc774 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Gradle 6.0 \uc774\uc0c1 \ubc84\uc804\ubd80\ud130\ub294 <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/07\/image3.png\" style=\"height:1.3em;\"><strong>Load Gradle Changes(Gradle \ubcc0\uacbd \uc0ac\ud56d \ub85c\ub4dc)<\/strong>\ub97c \ud074\ub9ad\ud558\uac70\ub098 Gradle \ud504\ub85c\uc81d\ud2b8\ub97c \ub2e4\uc2dc \uac00\uc838\uc624\ub294 \ubc29\uc2dd\uc73c\ub85c \ubcc0\uacbd \uc0ac\ud56d\uc744 \uad6c\uc131\uc5d0 \uba85\uc2dc\uc801\uc73c\ub85c \uc801\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>Gradle \uc774\uc804 \ubc84\uc804\uc758 \uacbd\uc6b0 \uc5d0\ub514\ud130\uc5d0\uc11c <strong>Load Configuration(\uad6c\uc131 \ub85c\ub4dc)<\/strong>\ub97c \ud074\ub9ad\ud558\uc5ec \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131\uc744 \uc218\ub3d9\uc73c\ub85c \ub85c\ub4dc\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>Gradle 6.0+\uc774 \ud3ec\ud568\ub41c IntelliJ IDEA 2020.1\uc5d0 <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/07\/image2.png\" style=\"height:1.3em;\"><strong>Load Script Configurations(\uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131 \ub85c\ub4dc)<\/strong>\ub77c\ub294 \uc561\uc158\uc744 \ud558\ub098 \ub354 \ucd94\uac00\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774 \uc561\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \uc804\uccb4 \ud504\ub85c\uc81d\ud2b8\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uc9c0 \uc54a\uace0\ub3c4 \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131\uc5d0 \ubcc0\uacbd \uc0ac\ud56d\uc744 \ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc804\uccb4 \ud504\ub85c\uc81d\ud2b8\ub97c \ub2e4\uc2dc \uac00\uc838\uc624\ub294 \uac83\ubcf4\ub2e4 \uc2dc\uac04\uc774 \ud6e8\uc52c \ub2e8\ucd95\ub429\ub2c8\ub2e4.<\/p>\n<h3>\uc624\ub958 \ubcf4\uace0 \uae30\ub2a5 \uac1c\uc120<\/h3>\n<p>\uc774\uc804\uc5d0\ub294 Gradle Daemon(\ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub418\uba70 \ubaa8\ub4e0 Gradle \uad00\ub828 \uc791\uc5c5 \ubc0f \ud65c\ub3d9\uc744 \ub2f4\ub2f9\ud558\ub294 \ud504\ub85c\uc138\uc2a4) \uc624\ub958\ub294 \ubcc4\ub3c4\uc758 \ub85c\uadf8 \ud30c\uc77c\uc5d0\uc11c\ub9cc \ud655\uc778 \uac00\ub2a5\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c Gradle 6.0 \uc774\uc0c1\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 Gradle Daemon\uc5d0\uc11c \ubaa8\ub4e0 \uc624\ub958 \uc815\ubcf4\ub97c \uc9c1\uc811 \ubc18\ud658\ud558\uace0 <strong>Build(\ube4c\ub4dc)<\/strong> \ub3c4\uad6c \ucc3d\uc5d0 \ud45c\uc2dc\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc2dc\uac04\uc774 \ub2e8\ucd95\ub418\uace0 \ubc88\uac70\ub85c\uc6c0\ub3c4 \uc904\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/07\/image4.png\" alt=\"\"><\/p>\n<h2>\ud504\ub85c\uc81d\ud2b8 \uad6c\uc131\uc758 \uc0c1\uc6a9\uad6c \uac10\uc18c<\/h2>\n<p>Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0 \uac1c\uc120 \uc0ac\ud56d\uc774 \ucd94\uac00\ub418\uc5b4 Gradle \ube4c\ub4dc \ud30c\uc77c\uc5d0\uc11c \ucf54\ub4dc\ub97c \ub354 \uc801\uac8c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uac00\uc7a5 \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \ucf54\ub4dc \uc2dc\ub098\ub9ac\uc624\uac00 \ub514\ud3f4\ud2b8\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/p>\n<p><a name=\"stdlib-default\"><\/a><\/p>\n<h3>\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub514\ud3f4\ud2b8 \uc885\uc18d \uc694\uc18c\ub85c \uc9c0\uc6d0<\/h3>\n<p>\uc218\ub9ce\uc740 \ud504\ub85c\uc81d\ud2b8\uc5d0 Kotlin \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. 1.4.0-RC \ubc84\uc804\ubd80\ud130\ub294 \uac01 \uc18c\uc2a4 \uc9d1\ud569\uc5d0\uc11c <code>stdlib<\/code> \uc885\uc18d \uc694\uc18c\ub97c \uc218\ub3d9\uc73c\ub85c \uc120\uc5b8\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ub514\ud3f4\ud2b8\ub85c \ucd94\uac00\ub418\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc790\ub3d9\uc73c\ub85c \ucd94\uac00\ub418\ub294 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubc84\uc804\uc740 Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uacfc \ub3d9\uc77c\ud55c \ubc84\uc804 \uad00\ub9ac\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c \ubc84\uc804\ub3c4 \ub3d9\uc77c\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798 \ucf54\ub4dc\uc5d0\uc11c 1.4 \ubc84\uc804 \uc774\uc804\uc758 Android, iOS \ubc0f JavaScript\ub97c \ub300\uc0c1\uc73c\ub85c \ud558\ub294 \uc77c\ubc18\uc801\uc778 \uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8 \uad6c\uc131\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n...\n\nandroid()\nios()\njs()\n\nsourceSets {\n    commonMain {\n        dependencies {\n            implementation(\"org.jetbrains.kotlin:kotlin-stdlib-common\")\n            implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.6\")\n        }\n    }\n\n    androidMain {\n        dependencies {\n            implementation(\"org.jetbrains.kotlin:kotlin-stdlib-jdk8\")\n            implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.6\")\n        }\n    }\n\n    jsMain {\n        dependencies {\n            implementation(\"org.jetbrains.kotlin:kotlin-stdlib-js\")\n            implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.3.6\")\n        }\n    }\n\n    iosMain {\n        dependencies {\n            implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.3.6\")\n        }\n    }\n}\n\n...\n<\/pre>\n<p>\uc774\uc81c \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc885\uc18d \uc694\uc18c\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc120\uc5b8\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub610\ud55c <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/06\/kotlin-1-4-m2-released\/#hierarchical-project-structure\">Kotlin 1.4-M2\uc5d0\uc11c \uacf5\uac1c\ub41c<\/a> \uacc4\uce35 \ud504\ub85c\uc81d\ud2b8 \uad6c\uc870 \uc9c0\uc6d0\uc774 \uc788\uc73c\ubbc0\ub85c \uae30\ud0c0 \uc885\uc18d \uc694\uc18c\ub97c \ud55c \ubc88\ub9cc \uc9c0\uc815\ud558\uba74 \ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c Gradle \ube4c\ub4dc \ud30c\uc77c\uc774 \ud6e8\uc52c \uac04\uacb0\ud558\uace0 \uc77d\uae30 \uc26c\uc6cc \uc9d1\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n...\n\nandroid()\nios()\njs()\n\nsourceSets {\n    commonMain {\n        dependencies {\n            implementation(\"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.6\")\n        }\n    }\n}\n\n...\n\n<\/pre>\n<p>\ud50c\ub7ab\ud3fc \uc18c\uc2a4 \uc9d1\ud569 \ubc0f \ubc31\uc5d4\ub4dc \uacf5\uc720 \uc18c\uc2a4 \uc9d1\ud569\uc5d0 \ud574\ub2f9 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ucd94\uac00\ub418\uace0, \ub0a8\uc740 \ubd80\ubd84\uc5d0 \uc77c\ubc18 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ucd94\uac00\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc740 <code>kotlinOptions.jvmTarget<\/code> \uc124\uc815\uc5d0 \ub530\ub77c \uc801\ud569\ud55c JVM \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc120\ud0dd\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc885\uc18d \uc694\uc18c\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc120\uc5b8\ud55c \uacbd\uc6b0(\uc608: \ub2e4\ub978 \ubc84\uc804\uc774 \ud544\uc694\ud55c \uacbd\uc6b0), Kotlin Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c \uc7ac\uc815\uc758\ud558\uac70\ub098 \ub450 \ubc88\uc9f8 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucd94\uac00\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \uc804\ud600 \ud544\uc694\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 Gradle \uc18d\uc131\uc5d0 \uc120\ud0dd \ud574\uc81c \ud50c\ub798\uadf8\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin.stdlib.default.dependency=false\n<\/pre>\n<p><a name=\"kotlin-native\"><\/a><\/p>\n<h2>Kotlin\/Native<\/h2>\n<h3>\uac04\uc18c\ud654\ub41c CocoaPods \uc885\uc18d \uc694\uc18c \uad00\ub9ac<\/h3>\n<p>\uc774\uc804\uc5d0\ub294 \ud504\ub85c\uc81d\ud2b8\ub97c \uc885\uc18d \uc694\uc18c \uad00\ub9ac\uc790 <a href=\"https:\/\/cocoapods.org\/\" target=\"_blank\" rel=\"noopener\">CocoaPods<\/a>\uacfc \ud1b5\ud569\ud558\uace0 \ub098\uc11c, \uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc758 \ub2e4\ub978 \ubd80\ubd84\uacfc\ub294 \ubcc4\uac1c\ub85c \ud504\ub85c\uc81d\ud2b8\uc758 iOS, macOS, watchOS \ub610\ub294 tvOS \ubd80\ubd84\uc740 Xcode\uc5d0\uc11c\ub9cc \ube4c\ub4dc\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ubd80\ubd84\uc740 IntelliJ IDEA\uc5d0\uc11c \ube4c\ub4dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ubfd0 \uc544\ub2c8\ub77c CocoaPods(Pod \ub77c\uc774\ube0c\ub7ec\ub9ac)\uc5d0 \uc800\uc7a5\ub41c Objective-C \ub77c\uc774\ube0c\ub7ec\ub9ac \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud560 \ub54c\ub9c8\ub2e4 IntelliJ IDEA\uc5d0\uc11c Xcode\ub85c \uc804\ud658\ud558\uace0 <code>pod install<\/code> \uc791\uc5c5\uc744 \uc2e4\ud589\ud55c \ud6c4 Xcode \ube4c\ub4dc\ub97c \uc2e4\ud589\ud574\uc57c \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c IntelliJ IDEA\uc5d0\uc11c \ubc14\ub85c Pod \uc885\uc18d \uc694\uc18c\ub97c \uad00\ub9ac\ud558\ub294 \ub3d9\uc2dc\uc5d0 \ucf54\ub4dc \uac15\uc870 \ud45c\uc2dc \ubc0f \ucf54\ub4dc \uc644\uc131 \ub4f1\uc758 \ucf54\ub529 \uc9c0\uc6d0 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c Xcode\ub85c \uc804\ud658\ud558\uc9c0 \uc54a\uace0\ub3c4 Gradle\ub85c \uc804\uccb4 Kotlin \ud504\ub85c\uc81d\ud2b8\ub97c \ube4c\ub4dc\ud558\ub294 \uac83\ub3c4 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc989, Swift\/Objective-C \ucf54\ub4dc\ub97c \uc791\uc131\ud560 \ud544\uc694\uac00 \uc788\uac70\ub098 \uc2dc\ubbac\ub808\uc774\ud130 \ub610\ub294 \uae30\uae30\uc5d0\uc11c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud574\uc57c \ud560 \uacbd\uc6b0\ub97c \uc81c\uc678\ud558\uace0\ub294 Xcode\ub97c \uc0ac\uc6a9\ud560 \ud544\uc694\uac00 \uc5c6\uc5b4\uc9c4 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\ub85c\uceec\uc5d0 \uc800\uc7a5\ub41c Pod \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc791\uc5c5\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud544\uc694\uc5d0 \ub530\ub77c \ub2e4\uc74c\uacfc \uac19\uc740 \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>Kotlin \ud504\ub85c\uc81d\ud2b8 \ubc0f CocoaPods \uc800\uc7a5\uc18c\uc758 Pod \ub77c\uc774\ube0c\ub7ec\ub9ac.<\/li>\n<li>Kotlin \ud504\ub85c\uc81d\ud2b8 \ubc0f \ub85c\uceec\uc5d0\uc11c \uc800\uc7a5\ub41c Pod \ub77c\uc774\ube0c\ub7ec\ub9ac.<\/li>\n<li>Kotlin Pod(CocoaPods \uc885\uc18d\uc131\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 Kotlin \ud504\ub85c\uc81d\ud2b8) \ubc0f \ud558\ub098 \uc774\uc0c1\uc758 \ub300\uc0c1\uc774 \ud3ec\ud568\ub41c Xcode \ud504\ub85c\uc81d\ud2b8.<\/li>\n<\/ul>\n<p>\ucd08\uae30 \uad6c\uc131\uc744 \uc644\ub8cc\ud558\uace0 CocoaPods\uc5d0 \uc0c8 \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud560 \uacbd\uc6b0 \ud504\ub85c\uc81d\ud2b8\ub97c IntelliJ IDEA\uc5d0 \ub2e4\uc2dc \uac00\uc838\uc624\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4. \uc0c8 \uc885\uc18d \uc694\uc18c\uac00 \uc790\ub3d9\uc73c\ub85c \ucd94\uac00\ub418\uba70 \ucd94\uac00\uc801\uc778 \uc808\ucc28\ub294 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. <\/p>\n<p>\uc544\ub798\uc5d0\uc11c CocoaPods \uc800\uc7a5\uc18c\uc758 Pod \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud558\ub294 \ubc29\ubc95\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Kotlin 1.4 \ubb38\uc11c\ub294 \ubaa8\ub4e0 \uc2dc\ub098\ub9ac\uc624\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n<h4>CocoaPods \ud1b5\ud569 \uc0ac\uc6a9 \ubc29\ubc95<\/h4>\n<h5>CocoaPods \uc885\uc18d \uc694\uc18c \uad00\ub9ac\uc790 \ubc0f \ud50c\ub7ec\uadf8\uc778 \uc124\uce58<\/h5>\n<ol>\n<li><code>cocoapods<\/code> \uc885\uc18d \uc694\uc18c \uad00\ub9ac\uc790\ub97c \uc124\uce58\ud569\ub2c8\ub2e4(<code>sudo gem\uc73c\ub85c cocoapods \uc124\uce58<\/code>).<\/li>\n<li><code>cocoapods-generate<\/code> \ud50c\ub7ec\uadf8\uc778 \uc124\uce58(<code>sudo gem\uc73c\ub85c cocoapods-generate \uc124\uce58<\/code>).<\/li>\n<li>\ud504\ub85c\uc81d\ud2b8\uc758 <code>build.gradle(.kts)<\/code> \ud30c\uc77c\uc5d0 <code>kotlin(\"native.cocoapods\")<\/code>\uc744 \uc0ac\uc6a9\ud574\uc11c CocoaPods \ud50c\ub7ec\uadf8\uc778\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4.\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nplugins {\n   kotlin(\"multiplatform\") version \"1.4.0-rc\"\n   kotlin(\"native.cocoapods\") version \"1.4.0-rc\"\n}\n<\/pre>\n<\/li>\n<\/ol>\n<h5>CocoaPods \uc800\uc7a5\uc18c\uc758 Pod \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc885\uc18d \uc694\uc18c \ucd94\uac00<\/h5>\n<ol>\n<li>\n<p><code>pod()<\/code>\uc744 \uc0ac\uc6a9\ud558\uc5ec CocoaPods \uc800\uc7a5\uc18c\uc5d0\uc11c \uc0ac\uc6a9\ud558\uace0\uc790 \ud558\ub294 Pod \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub610\ud55c \uc885\uc18d \uc694\uc18c\ub97c subspecs\ub85c \ucd94\uac00\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin {\n    ios()\n\n    cocoapods {\n        summary = \"CocoaPods test library\"\n        homepage = \"https:\/\/github.com\/JetBrains\/kotlin\"\n        pod(\"AFNetworking\", \"~&gt; 4.0.0\")\n\n        \/\/Remote Pod added as a subspec\n        pod(\"SDWebImage\/MapKit\")\n    }\n}\n<\/pre>\n<\/li>\n<li>\n<p>\ud504\ub85c\uc81d\ud2b8\ub97c \ub2e4\uc2dc \uac00\uc838\uc635\ub2c8\ub2e4. <br \/>\nKotlin \ucf54\ub4dc\uc5d0\uc11c \uc885\uc18d \uc694\uc18c\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \ud328\ud0a4\uc9c0\ub97c \uac00\uc838\uc640\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport cocoapods.AFNetworking.*\nimport cocoapods.SDWebImage.*\n<\/pre>\n<\/li>\n<\/ol>\n<p>\uacf5\uc720\ud55c <a href=\"https:\/\/github.com\/Kotlin\/kotlin-with-cocoapods-sample\" target=\"_blank\" rel=\"noopener\">\uc0d8\ud50c \ud504\ub85c\uc81d\ud2b8<\/a>\ub97c \uc0ac\uc6a9\ud574\uc11c \uc6d0\uaca9 CocoaPods \uc800\uc7a5\uc18c\uc5d0 \uadf8\ub9ac\uace0 \ub85c\uceec\uc5d0 \uc800\uc7a5\ub41c Pod \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud558\ub294 \ubc29\ubc95\uc744 \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/p>\n<h3>Apple \ud0c0\uae43\uc5d0\uc11c \uae30\ubcf8\uc73c\ub85c \ub9b4\ub9ac\uc2a4 .dSYM \uc0dd\uc131<\/h3>\n<p>\ub9ce\uc740 \uacbd\uc6b0 iOS \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ucda9\ub3cc \ub514\ubc84\uadf8 \uacfc\uc815\uc5d0\ub294 \ucda9\ub3cc \ubcf4\uace0\uc11c \ubd84\uc11d\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ucda9\ub3cc \ubcf4\uace0\uc11c\uac00 \uc801\uc808\ud55c \uac00\ub3c5\uc131\uc744 \uac16\ucd94\ub824\uba74 \uc2ec\ubcfc\ud654 \uacfc\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. Kotlin\uc73c\ub85c \uc791\uc131\ub41c \uc8fc\uc18c\ub97c \uc2ec\ubcfc\ud654\ud558\ub824\uba74 Kotlin \ucf54\ub4dc\uc6a9 .dSYM \ubc88\ub4e4\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. 1.4-M3 \ubc84\uc804\ubd80\ud130 Kotlin\/Native \ucef4\ud30c\uc77c\ub7ec\ub294 Darwin \ud50c\ub7ab\ud3fc\uc758 \ub9b4\ub9ac\uc2a4 \ubc14\uc774\ub108\ub9ac\uc5d0 \ud544\uc694\ud55c .dSYM\uc744 <strong>\ub514\ud3f4\ud2b8\ub85c<\/strong> \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc774 \uc635\uc158\uc740 <code>-Xadd-light-debug=disable<\/code> \ucef4\ud30c\uc77c\ub7ec \ud50c\ub798\uadf8\ub85c \ube44\ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ud50c\ub7ab\ud3fc\uc758 \uacbd\uc6b0 \ud574\ub2f9 \uc635\uc158\uc774 \ub514\ud3f4\ud2b8\ub85c \ube44\ud65c\uc131\ud654 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. Gradle\uc5d0\uc11c \uc774 \uc635\uc158\uc744 \ud1a0\uae00\ud558\ub824\uba74 \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin {\n    targets.withType&lt;org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget&gt; {\n        binaries.all {\n            freeCompilerArgs += \"-Xadd-light-debug={enable|disable}\"\n        }\n    }\n}\n\n<\/pre>\n<h3>\uc131\ub2a5 \uac1c\uc120 \uc0ac\ud56d<\/h3>\n<p>\uc800\ud76c \ud300\uc740 Kotlin\/Native \uac1c\ubc1c \ud504\ub85c\uc138\uc2a4\uc758 \uc804\ubc18\uc801\uc778 \uc131\ub2a5 \ucd5c\uc801\ud654\ub97c \uc704\ud574 \uafb8\uc900\ud788 \ub178\ub825\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>1.3.70 \ubc84\uc804\uc5d0\uc11c\ub294 Kotlin\/Native \ucef4\ud30c\uc77c \uc131\ub2a5 \uac1c\uc120\uc744 \uc704\ud574 \ub450 \uac00\uc9c0 \uc2e0\uaddc \uae30\ub2a5\uc744 \ub3c4\uc785\ud558\uc600\uc2b5\ub2c8\ub2e4. \ubc14\ub85c <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-3-70-released\/#kotlin-native\">\ud504\ub85c\uc81d\ud2b8 \uc885\uc18d \uc694\uc18c \uce90\uc2f1 \ubc0f Gradle Daemon\uc758 \ucef4\ud30c\uc77c\ub7ec \uc2e4\ud589 \uae30\ub2a5<\/a>\uc785\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\uc758 \ud53c\ub4dc\ubc31\uc744 \ubc14\ud0d5\uc73c\ub85c \uc5ec\ub7ec \uc774\uc288\ub97c \uc218\uc815\ud558\uc600\uc73c\uba70 \ud574\ub2f9 \uae30\ub2a5\uc758 \uc804\ubc18\uc801\uc778 \uc548\uc815\uc131\ub3c4 \uac1c\uc120\ud588\uc2b5\ub2c8\ub2e4. \uc55e\uc73c\ub85c\ub3c4 \uc9c0\uc18d\uc801\uc73c\ub85c \ub178\ub825\ud574 \uac00\uaca0\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ub610\ud55c \ub7f0\ud0c0\uc784 \uc131\ub2a5\uacfc \uad00\ub828\ud55c \uac1c\uc120 \uc0ac\ud56d\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. GC(\uac00\ube44\uc9c0 \uceec\ub809\uc158) \ucd5c\uc801\ud654\ub85c \uc804\ubc18\uc801\uc778 \ub7f0\ud0c0\uc784 \uc131\ub2a5\uc774 \ud5a5\uc0c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc7a5\uae30\uac04 \uc874\uc7ac\ud558\ub294 \uac1d\uccb4\uac00 \ub9ce\uc740 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ud655\uc2e4\ud788 \uc774\ub7ec\ud55c \uc131\ub2a5 \ud5a5\uc0c1\uc744 \ub290\ub07c\uc2e4 \uc218 \uc788\uc744 \uac81\ub2c8\ub2e4. \uc774\uc81c \uc911\ubcf5 \ubc15\uc2f1\uc744 \uc774\uc2a4\ucf00\uc774\ud504\ud558\uc5ec <code>HashMap<\/code> \ubc0f <code>HashSet<\/code> \uceec\ub809\uc158\uc774 \ub354 \ube60\ub974\uac8c \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><a name=\"kotlin-js\"><\/a><\/p>\n<h2>Kotlin\/JS<\/h2>\n<p>Kotlin 1.4.0-RC\uc5d0\uc11c\ub294 <code>@JsExport<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc774 \ub514\ud3f4\ud2b8 \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\uc640 \ud638\ud658\ub429\ub2c8\ub2e4. \ub610\ud55c npm \uc885\uc18d \uc694\uc18c \uad00\ub9ac \ubc0f Gradle \ud504\ub85c\uc81d\ud2b8\uc758 Dukat \ud1b5\ud569\uc744 \ub354 \uac15\ub825\ud558\uace0 \uc138\ubd84\ud654\ud558\uc5ec \uc81c\uacf5\ud558\uace0 CSS \uc9c0\uc6d0\uc744 \uac1c\uc120\ud558\uc600\uc2b5\ub2c8\ub2e4. \ub354\ubd88\uc5b4 Node.js API\uc640 \ud1b5\ud569\uc744 \ucc98\uc74c\uc73c\ub85c \ub3c4\uc785\ud558\ub294 \ub4f1 \ub2e4\uc591\ud55c \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\ub514\ud3f4\ud2b8 \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\uc6a9 <code>@JsExport<\/code> \uc5b4\ub178\ud14c\uc774\uc158<\/h3>\n<p>Kotlin 1.4 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-4-m1-released\/#exporting-declarations-to-javascript\">\uc774\uc804 \ub9b4\ub9ac\uc2a4<\/a>\uc5d0\uc11c <code>@JsExport<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ub3c4\uc785\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-4-m1-released\/#js-new-backend\">\uc0c8 IR \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc<\/a>\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0 JavaScript \ub610\ub294 TypeScript\uc5d0\uc11c \uc9c0\uc6d0\ub418\ub294 \ucd5c\uc0c1\uc704 \uc120\uc5b8\uc744 \uc0dd\uc131\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. Kotlin 1.4-M3 \ubc84\uc804\ubd80\ud130\ub294 \ud574\ub2f9 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ucd5c\uc2e0 \ub514\ud3f4\ud2b8 \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \ub514\ud3f4\ud2b8 \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\ub97c \uc0ac\uc6a9\ud560 \ub54c <code>@JsExport<\/code>\ub85c \ucd5c\uc0c1\uc704 \uc120\uc5b8\uc5d0 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ucd94\uac00\ud558\uba74 \uc120\uc5b8\uc758 \uc774\ub984 \ub9f9\uae00\ub9c1\uc774 \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4. \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc \uc591\ucabd\uc5d0 \ud574\ub2f9 \uc5b4\ub178\ud14c\uc774\uc158\uc774 \ud3ec\ud568\ub420 \uacbd\uc6b0 \ucd5c\uc0c1\uc704 \uc120\uc5b8\uc744 \ub0b4\ubcf4\ub0b4\uae30 \uc704\ud574 \ub85c\uc9c1\uc744 \ubcc0\uacbd\ud558\uc9c0 \uc54a\uace0\ub3c4 \ubc31\uc5d4\ub4dc \uac04 \uc804\ud658\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ub2e8, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-4-m1-released\/#ts-definitions\"> TypeScript \uc815\uc758 \uc0dd\uc131<\/a>\uc740 \uc0c8 IR \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\ub97c \uc0ac\uc6a9\ud560 \ub54c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>npm \uc885\uc18d \uc694\uc18c \uad00\ub9ac \ubcc0\uacbd \uc0ac\ud56d<\/h3>\n<h4>\uc885\uc18d \uc694\uc18c \uc120\uc5b8\uc5d0 \ud544\uc694\ud55c \uba85\uc2dc\uc801 \ubc84\uc804 \uc694\uad6c \uc0ac\ud56d<\/h4>\n<p>\ubc84\uc804 \ubc88\ud638\ub97c \uc9c0\uc815\ud558\uc9c0 \uc54a\uace0 npm \ud328\ud0a4\uc9c0 \uc885\uc18d \uc694\uc18c\ub97c \uc120\uc5b8\ud558\uba74 \uc0ac\uc6a9\ud558\ub294 \ud328\ud0a4\uc9c0\ub97c \uc548\uc815\uc801\uc73c\ub85c \uad00\ub9ac\ud558\uae30\uac00 \uc5b4\ub835\uc2b5\ub2c8\ub2e4. \uadf8\ub807\uae30\uc5d0 \uc55e\uc73c\ub85c\ub294 \uc885\uc18d \uc694\uc18c\uc5d0 \ub300\ud55c <a href=\"https:\/\/docs.npmjs.com\/misc\/semver#versions\" target=\"_blank\" rel=\"noopener\">npm\uc758 semver \uad6c\ubb38<\/a>\uc744 \uae30\ubc18\uc73c\ub85c \ubc84\uc804 \ub610\ub294 \ubc84\uc804 \ubc94\uc704\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\uc81c Gradle DSL\uc5d0\uc11c \uc5ec\ub7ec \uc885\uc18d \uc694\uc18c \ubc94\uc704\ub97c \uc9c0\uc6d0\ud558\ubbc0\ub85c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ud5c8\uc6a9\ud558\ub824\ub294 \ubc84\uc804\uc744 \uc815\ud655\ud558\uac8c \ucc3e\uc544\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\uc2dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\ndependencies {\n    implementation(npm(\"react\", \"&gt; 14.0.0 &lt;=16.9.0\"))\n}\n<\/pre>\n<\/p>\n<h4>npm \uc885\uc18d \uc694\uc18c \ucd94\uac00 \uc720\ud615<\/h4>\n<p><code>dependencies<\/code> \ube14\ub85d \ub0b4\ubd80\uc5d0 <code>npm(...)<\/code>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc9c0\uc815\ud560 \uc218 \uc788\ub294 \uc77c\ubc18\uc801\uc778 npm \uc885\uc18d \uc694\uc18c \uc678\uc5d0\ub3c4 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc138 \uac00\uc9c0 \uc774\uc0c1\uc758 \uc885\uc18d \uc694\uc18c \uc720\ud615\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.npmjs.com\/files\/package.json#devdependencies\" target=\"_blank\" rel=\"noopener\"><code>devDependencies<\/code><\/a>, <code>devNpm(...)<\/code> \uc0ac\uc6a9<\/li>\n<li><a href=\"https:\/\/docs.npmjs.com\/files\/package.json#optionaldependencies\" target=\"_blank\" rel=\"noopener\"><code>optionalDependencies<\/code><\/a>, <code>optionalNpm(...)<\/code> \uc0ac\uc6a9<\/li>\n<li><a href=\"https:\/\/docs.npmjs.com\/files\/package.json#peerdependencies\" target=\"_blank\" rel=\"noopener\"><code>peerDependencies<\/code><\/a>, <code>peerNpm(...)<\/code> \uc0ac\uc6a9<\/li>\n<\/ul>\n<p>\uac01 \uc720\ud615\uc758 \uc885\uc18d \uc694\uc18c\uac00 \uac00\uc7a5 \uc801\ud569\ud558\uac8c \uc0ac\uc6a9\ub418\ub294 \uacbd\uc6b0\ub97c \uc790\uc138\ud788 \uc54c\uc544\ubcf4\ub824\uba74 npm\uc5d0\uc11c \uc5f0\uacb0\ub41c \uacf5\uc2dd \ubb38\uc11c\ub97c \ud655\uc778\ud574 \uc8fc\uc138\uc694.<\/p>\n<h4>npm \uc774\ud589 \uc885\uc18d\uc131\uc758 \uc790\ub3d9 \ud3ec\ud568 \ubc0f \ud655\uc778<\/h4>\n<p>\uc774\uc804\uc5d0\ub294 \uc791\uc131\uc790\uac00 \uc544\ud2f0\ud329\ud2b8\uc5d0 <code>package.json<\/code> \ud30c\uc77c\uc744 \uc218\ub3d9\uc73c\ub85c \ucd94\uac00\ud558\uc9c0 \uc54a\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uc758\uc874\ud574\uc57c \ud560 \uacbd\uc6b0 npm \uc885\uc18d \uc694\uc18c\ub97c \uc218\ub3d9\uc73c\ub85c \uac00\uc838\uc640\uc57c \ud588\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, <code>kotlinx.serialization<\/code>\uc758 \uacbd\uc6b0 \ud328\ud0a4\uc9c0\uac00 Kotlin\/JS\uc5d0\uc11c \uc791\ub3d9\ud560 \uc218 \uc788\ub3c4\ub85d Gradle \ube4c\ub4dc \ud30c\uc77c\uc5d0 \uc885\uc18d \uc694\uc18c\ub85c <code>text-encoding<\/code> \ubc0f <code>abort-controller<\/code>\ub97c \ud3ec\ud568\ud574\uc57c \ud588\uc8e0.<\/p>\n<p>\uc774\uc81c Gradle \ud50c\ub7ec\uadf8\uc778\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 <code>package.json<\/code> \ud30c\uc77c\uc744 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud558\uace0 \ud574\ub2f9 \ud30c\uc77c\uc744 <code>jar<\/code> \ub610\ub294 <code>klib<\/code> \uc544\ud2f0\ud329\ud2b8\uc5d0 \ud3ec\ud568\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc720\ud615\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud3ec\ud568\ud560 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c \ud30c\uc77c \uad6c\ubb38 \ubd84\uc11d \ubc0f \ud544\uc694\ud55c \uc885\uc18d \uc694\uc18c\uac00 \uc790\ub3d9\uc73c\ub85c \ud3ec\ud568\ub418\ubbc0\ub85c Gradle \ube4c\ub4dc \ud30c\uc77c\uc5d0 \uc885\uc18d\uc131\uc744 \uc218\ub3d9\uc73c\ub85c \ucd94\uac00\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>CSS \uc9c0\uc6d0 \ubcc0\uacbd \uc0ac\ud56d<\/h3>\n<p><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/06\/kotlin-1-4-m2-released\/#js-improvemements\">Kotlin 1.4-M2<\/a> \ubc84\uc804\uc740 <code>cssSettings<\/code>\ub97c \ud1b5\ud574 Gradle\uc5d0\uc11c webpack\uc758 CSS \ubc0f \uc2a4\ud0c0\uc77c \ub85c\ub354\ub97c \ubc14\ub85c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc2e4\uc81c \uc791\uc5c5 \ubc0f \ud6a8\uacfc\ub97c \ub354\uc6b1 \uc5c4\ubc00\ud788 \ubc18\uc601\ud558\uace0\uc790 \uad6c\uc131 \ub9e4\uac1c\ubcc0\uc218 \uc774\ub984\uc744 <code>cssSupport<\/code>\uc73c\ub85c \ubcc0\uacbd\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc55e\uc73c\ub85c\ub294 1.4-M2\uc758 \uc2e4\ud5d8\uc801 \uc124\uc815\uacfc \ub2ec\ub9ac Gradle \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c CSS \uc9c0\uc6d0\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ubc88 \ubcc0\uacbd\uc744 \ud1b5\ud574 \uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uac00 \ucc98\ub9ac\ub418\ub294 \ubc29\uc2dd\uc5d0 \uc790\uccb4 \uc124\uc815\uc744 \ud3ec\ud568\ud588\ub358 \ubd84\ub4e4\uc758 \ud63c\ub780\uc744 \ubc29\uc9c0\ud560 \uc218 \uc788\uae30\ub97c \uae30\ub300\ud569\ub2c8\ub2e4(\uc608: Sass \ub610\ub294 Less \ub85c\ub354 \uc0ac\uc6a9). \uc774\ub7ec\ud55c \uc0c1\ud669\uc5d0\uc11c\ub294 \ud504\ub85c\uc81d\ud2b8\uc758 \ub514\ud3f4\ud2b8 \uad6c\uc131\uc5d0\uc11c \ucda9\ub3cc\uc744 \uc57c\uae30\ud560 \uc218 \uc788\ub294 CSS \uc124\uc815\uc744 \uc774\ubbf8 \uc0bd\uc785\ud55c \uac83\uc774 \uc989\uc2dc \uad6c\ubd84\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c CSS \uc9c0\uc6d0\uc744 \ud65c\uc131\ud654\ud558\ub824\uba74 <code>webpackTask<\/code>, <code>runTask<\/code>, <code>testTask<\/code> \uc804\uc6a9 Gradle \ube4c\ub4dc \ud30c\uc77c\uc5d0 <code>cssSupport.enabled<\/code> \ud50c\ub798\uadf8\ub97c \uc124\uc815\ud558\uc138\uc694. IntelliJ IDEA\uc5d0 \ud3ec\ud568\ub41c \ub9c8\ubc95\uc0ac\ub97c \uc0ac\uc6a9\ud574 \uc0c8 \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud560 \uacbd\uc6b0 \uc0dd\uc131\ud55c <code>build.gradle(.kts)<\/code> \ud30c\uc77c\uc5d0 \ub2e4\uc74c \uc124\uc815\uc774 \uc790\ub3d9\uc73c\ub85c \ud3ec\ud568\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nwebpackTask {\n   cssSupport.enabled = true\n}\nrunTask {\n   cssSupport.enabled = true\n}\ntestTask {\n   useKarma {\n      \/\/ . . .\n      webpackConfig.cssSupport.enabled = true\n   }\n}\n<\/pre>\n<p>\uc800\ud76c \ud300\uc740 \uac01\uac01\uc758 \uc791\uc5c5\ub9c8\ub2e4 \uac1c\ubcc4\uc801\uc778 \uc124\uc815 \uc870\uc815\uc774 \ud544\uc694\ud558\ub2e4\ub294 \uc810\uc774 \ubcc4\ub85c \ud3b8\ub9ac\ud558\uc9c0 \uc54a\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud50c\ub7ec\uadf8\uc778 DSL\uc5d0 <code>cssSupport<\/code> \uad6c\uc131 \uc911\uc559 \ud3ec\uc778\ud2b8\ub97c \ucd94\uac00\ud560 \uc608\uc815\uc785\ub2c8\ub2e4(\uc9c4\ud589 \uc0c1\ud669\uc744 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-39825\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>\uc5d0\uc11c \ud655\uc778\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4).<\/p>\n<h3>Dukat \ud1b5\ud569 \uac1c\uc120<\/h3>\n<p>Kotlin\/JS Gradle \ud50c\ub7ec\uadf8\uc778\uc740 <a href=\"https:\/\/github.com\/kotlin\/dukat\" target=\"_blank\" rel=\"noopener\">Dukat<\/a> \ud1b5\ud569\uc5d0 \ubcf4\ub2e4 \uc138\ubd84\ud654\ub41c \uc81c\uc5b4 \uae30\ub2a5\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. Dukat\uc740 TypeScript \uc120\uc5b8 \ud30c\uc77c(<code>.d.ts<\/code>)\uc744 Kotlin \uc678\ubd80 \uc120\uc5b8\uc73c\ub85c \uc790\ub3d9 \ubcc0\ud658\ud558\ub294 \ub3c4\uad6c\uc785\ub2c8\ub2e4. \uc774\uc81c \ub450 \uac00\uc9c0 \ubc29\uc2dd\uc73c\ub85c Dukat\uc758 \uc120\uc5b8\uc744 \uc0dd\uc131\ud558\ub294 \uacbd\uc6b0 \ubc0f \uc2dc\uc810\uc744 \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\ube4c\ub4dc \uc2dc\uc810\uc5d0 \uc678\ubd80 \uc120\uc5b8 \uc0dd\uc131<\/h4>\n<p>\uc774\uc81c npm \uc885\uc18d \uc694\uc18c \ud568\uc218\uc5d0\uc11c \ud328\ud0a4\uc9c0 \uc774\ub984 \ubc0f \ubc84\uc804 \ub4a4\uc5d0 \uc138 \ubc88\uc9f8 \ub9e4\uac1c\ubcc0\uc218\uc778 <code>generateExternals<\/code>\uac00 \ucd94\uac00\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c Dukat\uc774 \ud2b9\uc815 \uc885\uc18d \uc694\uc18c\uc5d0 \ub300\ud55c \uc120\uc5b8\uc744 \uc0dd\uc131\ud560\uc9c0 \uc5ec\ubd80\ub97c \uac1c\ubcc4\uc801\uc73c\ub85c \uc81c\uc5b4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\uc2dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\ndependencies {\n  implementation(npm(\"decamelize\", \"4.0.0\", generateExternals = true))\n}\n<\/pre>\n<p>\ub610\ud55c gradle.properties \ud30c\uc77c\uc5d0\uc11c <code>kotlin.js.generate.externals flag<\/code>(<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/08\/kotlin-1-3-50-released\/#dukat\">\uc2e4\ud5d8\uc801<\/a>\uc73c\ub85c \uc81c\uacf5\ub418\uc5c8\uc744 \uc2dc \uae30\uc874 \uc774\ub984\uc740 <code>kotlin.js.experimental.generateKotlinExternals<\/code>)\ub97c \ud65c\uc6a9\ud558\uc5ec \ubaa8\ub4e0 npm \uc885\uc18d \uc694\uc18c\uc5d0 \ud544\uc694\ud55c \uc0dd\uc131\uae30 \ub3d9\uc791\uc744 \ub3d9\uc2dc\uc5d0 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5b8\uc81c\ub098\ucc98\ub7fc \uac1c\ubcc4\uc801\uc778 \uba85\uc2dc\uc801 \uc124\uc815\uc774 \uc77c\ubc18 \ud50c\ub798\uadf8\ubcf4\ub2e4 \uc6b0\uc120\ud569\ub2c8\ub2e4.<\/p>\n<h4>Gradle \uc791\uc5c5\uc744 \ud1b5\ud574 \uc678\ubd80 \uc120\uc5b8\uc744 \uc218\ub3d9 \uc0dd\uc131<\/h4>\n<p>Dukat\uc5d0\uc11c \uc0dd\uc131\ub41c \uc120\uc5b8\uc744 \uc644\uc804\ud788 \uc81c\uc5b4\ud558\ub824\ub294 \uacbd\uc6b0, \uc218\ub3d9 \uc870\uc815\uc744 \uc801\uc6a9\ud558\ub824\ub294 \uacbd\uc6b0 \ub610\ub294 \uc790\ub3d9 \uc0dd\uc131\ub41c \uc678\ubd80 \uc120\uc5b8 \uc2e4\ud589 \uc2dc \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud55c \uacbd\uc6b0\uc5d0\ub294 <code>generateExternals<\/code> Gradle \uc791\uc5c5\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub4e0 npm \uc885\uc18d \uc694\uc18c\uc5d0 \ub300\ud55c \uc120\uc5b8 \uc0dd\uc131\uc744 \uc218\ub3d9\uc73c\ub85c \ud2b8\ub9ac\uac70\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud558\uba74 \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\uc5d0\uc11c \uc774\ub984\uc774 <code>externals<\/code>\ub85c \uc9c0\uc815\ub41c \ub514\ub809\ud1a0\ub9ac\uc5d0 \uc120\uc5b8\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uc774\ub54c \uc0dd\uc131\ub41c \ucf54\ub4dc\ub97c \uac80\ud1a0\ud558\uace0 \uc0ac\uc6a9\ud558\uace0\uc790 \ud558\ub294 \ubaa8\ub4e0 \ubd80\ubd84\uc744 \uc18c\uc2a4 \ub514\ub809\ud1a0\ub9ac\uc5d0 \ubcf5\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\ub2e8, \uc18c\uc2a4 \ud3f4\ub354\uc5d0 \uc678\ubd80 \uc120\uc5b8\uc744 \uc218\ub3d9\uc73c\ub85c \uc81c\uacf5\ud558\uace0 \ub3d9\uc77c\ud55c \uc885\uc18d \uc694\uc18c\uc5d0 \ub300\ud55c \uc678\ubd80 \uc120\uc5b8\uc744 \ube4c\ub4dc \uc2dc\uc810\uc5d0 \uc0dd\uc131\ud558\ub3c4\ub85d \ud65c\uc131\ud654\ud558\uba74 \ud574\uacb0 \uc774\uc288\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc74c\uc5d0 \uc720\uc758\ud558\uc138\uc694)<\/p>\n<h3>kotlin.dom \ubc0f kotlin.browser\ub97c \ubcc4\ub3c4\uc758 \uc544\ud2f0\ud329\ud2b8\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158<\/h3>\n<p>Kotlin\/JS\uc6a9 \ube0c\ub77c\uc6b0\uc800 \ubc0f DOM \ubc14\uc778\ub529\uc758 \uc18d\ub3c4\ub97c \uac1c\uc120\ud558\uace0 \uc5b8\uc5b4 \uc790\uccb4\uc758 \ub9b4\ub9ac\uc2a4 \uc8fc\uae30\uc640 \ubd84\ub9ac\ud558\uae30 \uc704\ud574 <code>kotlin.dom<\/code> \ubc0f <code>kotlin.browser<\/code> \ud328\ud0a4\uc9c0\uc5d0 \uc704\uce58\ud55c \ud604\uc7ac\uc758 API\ub97c \uc911\ub2e8\ud558\uc600\uc2b5\ub2c8\ub2e4. <code>kotlinx.dom<\/code> \ubc0f <code>kotlinx.browser<\/code> \ud328\ud0a4\uc9c0\uc5d0\uc11c \uc774\ub7ec\ud55c API\uc5d0 \ub300\ud55c \ub300\uccb4 \ud56d\ubaa9\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4\ub9cc, \ud5a5\ud6c4 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \ubcc4\ub3c4\uc758 \uc544\ud2f0\ud329\ud2b8\ub85c \ucd94\ucd9c\ud560 \uc608\uc815\uc785\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 API\ub85c\uc758 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc740 \ub9e4\uc6b0 \uc9c1\uad00\uc801\uc774\uba70 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc0ac\uc6a9\ub41c import \ubb38\uc744 \uc870\uc815\ud558\uc5ec \uc0c8 kotlinx \ud328\ud0a4\uc9c0\uc5d0 \uc9c0\uc815\ud558\uba74 \ub429\ub2c8\ub2e4.  IntelliJ IDEA\uc5d0\uc11c Alt-Enter\ub97c \ub20c\ub7ec\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 Quick-fixes(\ube60\ub978 \uc218\uc815) \uae30\ub2a5\uc774 \uc774 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc5d0 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p><a name=\"kotlin-js-node\"><\/a><\/p>\n<h3>\ud14c\uc2a4\ud2b8 \ubc84\uc804: kotlinx-nodejs<\/h3>\n<p> <a href=\"https:\/\/nodejs.org\/docs\/latest\/api\/\" target=\"_blank\" rel=\"noopener\">Node.js API<\/a>\uc5d0 \ub300\ud55c \uacf5\uc2dd \ubc14\uc778\ub529\uc778 <code>kotlinx-nodejs<\/code> \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc774 \ucd9c\uc2dc\ub418\uc5c8\ub2e4\ub294 \uae30\uc05c \uc18c\uc2dd\uc744 \uc804\ud574\ub4dc\ub9bd\ub2c8\ub2e4. \uc624\ub7ab\ub3d9\uc548 Kotlin\uc744 \ud1b5\ud574 Node.js\ub97c \ub300\uc0c1\uc73c\ub85c \uc9c0\uc815\ud560 \uc218 \uc788\uc5c8\uc9c0\ub9cc, \ub300\uc0c1\uc758 \ubaa8\ub4e0 \uae30\ub2a5\uc740 API\uc5d0 \ud0c0\uc785 \uc548\uc815\uc801\uc778 \uc561\uc138\uc2a4\ub97c \ubcf4\uc720\ud560 \ub54c \uc0ac\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/Kotlin\/kotlinx-nodejs\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\uc5d0\uc11c <code>kotlinx-nodejs<\/code> \ubc14\uc778\ub529\uc744 \uccb4\ud06c\uc544\uc6c3\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><code>kotlinx-nodejs<\/code>\ub97c \ud504\ub85c\uc81d\ud2b8\uc5d0 \ucd94\uac00\ud558\ub824\uba74 <code>jcenter ()<\/code>\uac00 \uc800\uc7a5\uc18c\uc5d0 \ucd94\uac00\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694. \ub2e4\uc74c\uc73c\ub85c \uac04\ub2e8\ud788 \uc544\ud2f0\ud329\ud2b8\uc5d0 \uc885\uc18d \uc694\uc18c\ub97c \ucd94\uac00\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\ndependencies {\n    \/\/ . . .\n    implementation(\"org.jetbrains.kotlinx:kotlinx-nodejs:0.0.4\")\n}\n<\/pre>\n<p>Gradle \ubcc0\uacbd \uc0ac\ud56d\uc744 \ub85c\ub4dc\ud55c \ud6c4 Node.js\ub85c \uc81c\uacf5\ub41c API\ub97c \uc2e4\ud5d8\uc801\uc73c\ub85c \uc0ac\uc6a9\ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, DNS \ud655\uc778 \ud328\ud0a4\uc9c0\ub97c \ud65c\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n    dns.lookup(\"example.org\") { err, address, family -&gt;\n        console.log(\"address: $address, family IPv$family\")\n    }\n}\n<\/pre>\n<p>\uc544\uc9c1 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc5d0 \ubd88\uacfc\ud558\ubbc0\ub85c kotlinx-nodejs\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uace0, \ubb38\uc81c\uac00 \ubc1c\uacac\ub41c \uacbd\uc6b0 \uc800\uc7a5\uc18c\uc758 <a href=\"https:\/\/github.com\/Kotlin\/kotlinx-nodejs\/issues\" target=\"_blank\" rel=\"noopener\">\uc774\uc288 \ud2b8\ub798\ucee4<\/a>\uc5d0 \ubcf4\uace0\ud574 \uc8fc\uc2dc\uba74 \uac10\uc0ac\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>kotlin2js \ubc0f kotlin-dce-js Gradle \ud50c\ub7ec\uadf8\uc778 \uc0ac\uc6a9 \uc911\ub2e8<\/h3>\n<p>Kotlin 1.4\ubd80\ud130 Kotlin\/JavaScript\ub97c \ub300\uc0c1\uc73c\ub85c \ud558\ub294 \uae30\uc874\uc758 Gradle \ud50c\ub7ec\uadf8\uc778(<code>kotlin2js<\/code> \ubc0f <code>kotlin-dce-js<\/code>)\uc740 \uacf5\uc2dd\uc801\uc73c\ub85c \uc0ac\uc6a9\uc774 \uc911\ub2e8\ub418\uc5c8\uc73c\uba70 <code>kotlin.js<\/code> Gradle \ud50c\ub7ec\uadf8\uc778\uc774 \ub300\uc2e0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\n(\uc774\ubbf8 \uc0ac\uc6a9\uc774 \uc911\ub2e8\ub41c) <code>kotlin-frontend-plugin<\/code>\uacfc \ub354\ubd88\uc5b4 \ud574\ub2f9 \ud50c\ub7ec\uadf8\uc778\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub358 \uc8fc\uc694 \uae30\ub2a5\uc740 \uc0c8 \ud50c\ub7ec\uadf8\uc778\uc73c\ub85c \uc555\ucd95\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c Kotlin\/Multiplatform \ud504\ub85c\uc81d\ud2b8\uc640 \ud638\ud658 \uac00\ub2a5\ud55c \ud1b5\ud569 DSL\uc744 \uc0ac\uc6a9\ud558\uc5ec Kotlin\/JS \ub300\uc0c1\uc744 \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-3-70-released\/#kotlin-js\">Kotlin 1.3.70<\/a> \ubc84\uc804\ubd80\ud130\ub294 \ucd5c\uc801\ud654\ub41c \ud504\ub85c\uadf8\ub7a8 \ubc88\ub4e4\uc744 \uc2e4\ud589 \ubc0f \uc0dd\uc131\ud558\ub294<code>browserProductionRun<\/code> \ubc0f <code>browserProductionWebpack<\/code> \uc791\uc5c5\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0\uc5d0\ub3c4 \ubd88\ud544\uc694\ud55c \ucf54\ub4dc \uc81c\uac70(DCE) \uae30\ub2a5\uc774 \uc790\ub3d9\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. (\ud604\uc7ac \ubd88\ud544\uc694\ud55c \ucf54\ub4dc \uc81c\uac70\ub294 Node.js \ub610\ub294 \ud14c\uc2a4\ud2b8\uac00 \uc544\ub2cc \uc0dd\uc131 \ucd9c\ub825 \ube0c\ub77c\uc6b0\uc800\uac00 \ub300\uc0c1\uc778 \uacbd\uc6b0\uc5d0\ub9cc \uc9c0\uc6d0\ub429\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ucc98\ub9ac\ub418\uae38 \ubc14\ub77c\ub294 \uae30\ud0c0 \uc0ac\uc6a9 \uc0ac\ub840\uac00 \uc788\ub294 \uacbd\uc6b0 \uc5b8\uc81c\ub4e0 <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">\uc800\ud76c \ud300\uc5d0 \uc54c\ub824\uc8fc\uc138\uc694<\/a>.)<\/p>\n<h3>\uc0b6\uc758 \uc9c8\uc744 \ub192\uc774\ub294 \ucd94\uac00 \uac1c\uc120 \uc0ac\ud56d \ubc0f \uc8fc\uc694 \uc218\uc815 \uc0ac\ud56d<\/h3>\n<ul>\n<li><code>@JsExport<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc774 \uae08\uc9c0\ub41c \uc0ac\uc6a9 \uc704\uce58\uc5d0 \ub354 \ub9ce\uc740 \ucef4\ud30c\uc77c\ub7ec \uc624\ub958\uac00 \ucd94\uac00\ub418\uc5b4 \uc774\ub7ec\ud55c \ubb38\uc81c\uac00 \uac15\uc870 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/li>\n<li>IR \ucef4\ud30c\uc77c\ub7ec \ubc31\uc5d4\ub4dc\ub97c \uc0ac\uc6a9\ud560 \ub54c  <code>klib<\/code>\uc5d0 \ub300\ud55c \uc99d\ubd84 \ucef4\ud30c\uc77c\uc744 \ud3ec\ud568\ud558\ub294 \uc0c8\ub85c\uc6b4 \uc804\ub7b5\ub7b5\uc774 \ud65c\uc131\ud654 \ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc870\uce58\ub294 \ucef4\ud30c\uc77c \uc2dc\uac04 \uac1c\uc120\uc744 \uc704\ud55c \uc5ec\ub7ec \ub2e8\uacc4 \uc911 \ud558\ub098 \uc785\ub2c8\ub2e4.<\/li>\n<li>webpack \uac1c\ubc1c \uc11c\ubc84 \uad6c\uc131\uc744 \uc218\uc815\ud558\uc5ec Hot Reload \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \ub54c <code>ENOENT: \ud574\ub2f9 \ud30c\uc77c \ub610\ub294 \ub514\ub809\ud1a0\ub9ac \uc5c6\uc74c<\/code> \uc640 \uac19\uc740 \uc624\ub958\ub97c \ubc29\uc9c0\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2>\uc9c4\ud654\ud558\ub294 Kotlin \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac API<\/h2>\n<p>Kotlin \ubc1c\uc804\uc758 \uad00\uc810\uc5d0\uc11c Kotlin 1.4\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/kotlin-evolution.html#feature-releases-and-incremental-releases\" target=\"_blank\" rel=\"noopener\">\uae30\ub2a5 \ub9b4\ub9ac\uc2a4<\/a>\uc785\ub2c8\ub2e4. \uadf8\ub807\uae30\uc5d0 \uc774\uc804 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc5d0\uc11c \uc774\ubbf8 \uc18c\uac1c\ud574\ub4dc\ub9b0 \ub2e4\uc591\ud55c \uc2e0\uaddc \uae30\ub2a5\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc758 \ub2e4\ub978 \uc911\uc694 \uce21\uba74\uc740 \uae30\uc874 API\uc5d0 \uc911\uc694\ud558\uace0 \ud601\uc2e0\uc801\uc778 \ubcc0\uacbd \uc0ac\ud56d\uc774 \ud3ec\ud568\ub41c\ub2e4\ub294 \uc810\uc785\ub2c8\ub2e4. 1.4 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \uae30\ub300\ud560 \uc218 \uc788\ub294 \ubcc0\uacbd \uc0ac\ud56d\uc758 \uac04\ub7b5\ud55c \uc124\uba85\uc744 \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/p>\n<h3>\uc2e4\ud5d8\uc801 API \uc548\uc815\ud654<\/h3>\n<p>\uc0ac\uc6a9\uc790\uac00 Kotlin \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \uae30\ub300\ud558\ub294 \uae30\ub2a5\uc744 \ucd5c\ub300\ud55c \ube68\ub9ac \uc81c\uacf5\ud558\uace0\uc790 <em>\uc2e4\ud5d8\uc801<\/em> \ubc84\uc804\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc0c1\ud0dc\ub294 API \uac1c\ubc1c\uc774 \uc544\uc9c1 \uc9c4\ud589 \uc911\uc774\uba70 \ud5a5\ud6c4 \ud638\ud658\uc131\uc744 \uace0\ub824\ud558\uc9c0 \uc54a\uace0 \ud5a5\ud6c4\uc5d0 \ubcc0\uacbd\ub420 \uc218 \uc788\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc2e4\ud5d8\uc801 API\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uc11c \ud574\ub2f9 \uc0c1\ud0dc\ub97c \uacbd\uace0\ud558\uace0 <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/opt-in-requirements.html\" target=\"_blank\" rel=\"noopener\">\uc0ac\uc804 \ub3d9\uc758\ub97c \uc694\uccad<\/a>\ud569\ub2c8\ub2e4(<code>@OptIn<\/code> \uc5b4\ub178\ud14c\uc774\uc158).<\/p>\n<p>\uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \uc2e4\ud5d8\uc801 API\ub294 \uc548\uc815 \uc0c1\ud0dc\ub85c \uac1c\uc120\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc548\uc815 \uc0c1\ud0dc\uc5d0 \uc774\ub974\uba74 \uc608\uae30\uce58 \uc54a\uac8c \ud615\uc2dd\uacfc \ub3d9\uc791\uc774 \ubcc0\uacbd\ub420 \uc77c\uc740 \uc5c6\uc2b5\ub2c8\ub2e4(\ubcc0\uacbd \uc0ac\ud56d\uc740 \uc801\uc808\ud55c \uc0ac\uc6a9 \uc911\ub2e8 \uc8fc\uae30\uc5d0 \ub530\ub77c\uc11c\ub9cc \uc801\uc6a9\ub429\ub2c8\ub2e4). API\uac00 \uacf5\uc2dd\uc801\uc73c\ub85c \uc548\uc815\ud654\ub418\uba74 \uacbd\uace0\ub098 \uc0ac\uc804 \ub3d9\uc758 \uc5c6\uc774 API\ub97c \uc548\uc804\ud558\uac8c \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>1.4 \ubc84\uc804\uc758 \uacbd\uc6b0 Kotlin \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \ub2e4\uc591\ud55c \uc2e4\ud5d8\uc801 \uae30\ub2a5\uc774 \uc548\uc815 \uc0c1\ud0dc\ub85c \ubcc0\uacbd\ub429\ub2c8\ub2e4. \uc544\ub798\uc5d0\uc11c \uc77c\ubd80 \uc608\uc2dc \ubc0f \ub3c4\uc785\ub41c \ubc84\uc804 \uc815\ubcf4\ub97c \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/06\/kotlin-1-3-40-released\/\">1.3.40: <code>CharArray<\/code>\/<code>ByteArray<\/code> \ubc0f <code>String<\/code><\/a> \ubcc0\ud658 \ud568\uc218:\n<ul>\n<li><code>ByteArray.decodeToString<\/code> \ubc0f <code>String.encodeToByteArray<\/code><\/li>\n<li><code>CharArray.concatToString<\/code> \ubc0f <code>String.toCharArray<\/code><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/08\/kotlin-1-3-50-released\/\">1.3.50: \ube44\ud2b8 \uc5f0\uc0b0<\/a> <code>countOneBits()<\/code>, <code>countLeadingZeroBits()<\/code>, <code>countTrailingZeroBits()<\/code>, <code>takeHighestOneBit()<\/code>, <code>takeLowestOneBit()<\/code><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/03\/kotlin-1-3-70-released\/\">1.3.70: \uceec\ub809\uc158 \uc5f0\uc0b0<\/a> <code>MutableList<\/code>; <code>ArrayDeque<\/code> \ud074\ub798\uc2a4\uc758 <code>randomOrNull()<\/code>, <code>reduceOrNull()<\/code>, <code>scan()<\/code>; <code>remove*()<\/code> \ud568\uc218<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/05\/1-4-m2-standard-library\/\">1.4-M2: \uceec\ub809\uc158 \uc5f0\uc0b0<\/a> <code>onEachIndexed()<\/code> \ubc0f <code>reduceIndexedOrNull()<\/code>, <code>runningFold()<\/code> \ubc0f <code>runningReduce()<\/code><\/li>\n<\/ul>\n<p>1.4 \ubc84\uc804\uc5d0\uc11c \ub354 \ub9ce\uc740 \ud568\uc218 \ubc0f \ud074\ub798\uc2a4\uac00 \uc548\uc815 \uc0c1\ud0dc\ub85c \ubcc0\uacbd\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. \uc774\ubc88 \ubc84\uc804(1.4.0-RC)\ubd80\ud130 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ud574\ub2f9 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc2dc <code>@OptIn<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc774 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uc0ac\uc6a9 \uc911\ub2e8 \uc8fc\uae30<\/h3>\n<p>\uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc5d0\ub294 \uae30\uc874 \uc0ac\uc6a9 \uc911\ub2e8 \uc8fc\uae30\uc5d0 \ub300\ud55c \uac1c\uc120 \uc0ac\ud56d\ub3c4 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc99d\ubd84 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c <code>WARNING<\/code> \uc218\uc900\uc758 \uc0c8\ub85c\uc6b4 \uc0ac\uc6a9 \uc911\ub2e8 \uc8fc\uae30\ub85c \uc2dc\uc791\ub418\uc5c8\uc9c0\ub9cc \uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 <code>ERROR<\/code> \uc218\uc900\uc73c\ub85c \ud55c\uce35 \uac15\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774\ubbf8 <code>ERROR<\/code> \uc218\uc900\uc73c\ub85c \uc9c0\uc815\ub41c API \uc694\uc18c\ub294 \ucf54\ub4dc\uc758 \uc2e0\uaddc \uc0ac\uc6a9 \uc704\uce58\uc5d0\uc11c \uc644\uc804\ud788 \uc228\uae40 \ucc98\ub9ac\ub418\uba70 \uc774\ubbf8 \ucef4\ud30c\uc77c\ub41c \ucf54\ub4dc\uc640 \ud638\ud658\uc131\uc744 \uc720\uc9c0\ud558\uae30 \uc704\ud574 2\uc9c4 \ud615\uc2dd\uc73c\ub85c\ub9cc \uc81c\uacf5\ub429\ub2c8\ub2e4. \uc774\uc640 \uac19\uc740 \ub2e8\uacc4\uac00 \uacb0\ud569\ub418\uc5b4 \uc0ac\uc6a9 \uc911\ub2e8\ub41c API \uc694\uc18c\uac00 \uc810\uc9c4\uc801\uc73c\ub85c \uc81c\uac70 \ub429\ub2c8\ub2e4.<\/p>\n<p>\ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9 \uc911\ub2e8 \uc218\uc900\uc774 <code>WARNING<\/code>\uc778 API \uc694\uc18c\uac00 \uc0ac\uc6a9\ub420 \uacbd\uc6b0 \ucef4\ud30c\uc77c\ub7ec\ub294 \uc774\ub7ec\ud55c \uc0ac\uc6a9\uc5d0 \ub300\ud574 \uacbd\uace0\ud569\ub2c8\ub2e4. Kotlin 1.4.0-RC\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uacbd\uc6b0 \uc77c\ubd80 \uacbd\uace0\uac00 \uc624\ub958 \uc218\uc900\uc73c\ub85c \ubcc0\uacbd\ub429\ub2c8\ub2e4. IDE\uc5d0\uc11c \ud45c\uc2dc\ub418\ub294 \uba54\uc2dc\uc9c0\ub97c \ud65c\uc6a9\ud558\uc5ec \uc624\ub958\uac00 \uc788\ub294 \ucf54\ub4dc \uc0ac\uc6a9\uc744 \uc81c\uacf5\ub41c \ub300\uc548 \uc694\uc18c\ub85c \ub300\uccb4\ud558\uace0 \ucf54\ub4dc\uac00 \ub2e4\uc2dc \ucef4\ud30c\uc77c\ub418\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<p>Kotlin \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac API\uc758 \ud638\ud658\uc131 \uc190\uc0c1 \ubcc0\uacbd\uacfc \uad00\ub828\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/compatibility-guide-14.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.4 \ud638\ud658\uc131 \uac00\uc774\ub4dc<\/a>\uc5d0\uc11c \ud655\uc778\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc2a4\ud06c\ub9bd\ud2b8 \uc791\uc5c5<\/h2>\n<p>\uc774\uc804 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c \uba87 \uac1c\uc5d0\uc11c \uc774 \uc139\uc158\uc774 \uc0dd\ub7b5\ub418\uc5c8\uc9c0\ub9cc 1.4 \ubc84\uc804\uc758 Kotlin \uc2a4\ud06c\ub9bd\ud2b8 \uc791\uc5c5\uc744 \ub354\uc6b1 \uc548\uc815\uc801\uc774\uace0 \ube60\ub974\uace0 \uc0ac\uc6a9\uc774 \uac04\ud3b8\ud558\uac8c \uac1c\uc120\ud558\ub824\ub294 \ub178\ub825\uc740 \uc9c0\uc18d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. RC \ubc84\uc804\uc5d0\ub294 \ub2e4\uc591\ud55c \uc218\uc815 \uc0ac\ud56d \ubc0f \uae30\ub2a5 \uac1c\uc120 \uc0ac\ud56d\uc774 \ucd94\uac00\ub418\uc5b4 \uc131\ub2a5 \ud5a5\uc0c1\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uc544\ud2f0\ud329\ud2b8 \uc774\ub984 \ubcc0\uacbd<\/h3>\n<p>\uc544\ud2f0\ud329\ud2b8 \uc774\ub984\uc758 \ud63c\ub780\uc744 \ubc29\uc9c0\ud558\uace0\uc790 <code>kotlin-scripting-jsr223-embeddable<\/code> \ubc0f <code>kotlin-scripting-jvm-host-embeddable<\/code> \uc544\ud2f0\ud329\ud2b8\uc758 \uc774\ub984\uc744 <code>kotlin-scripting-jsr223<\/code> \ubc0f <code>kotlin-scripting-jvm-host<\/code>\ub85c \ubcc0\uacbd\ud588\uc2b5\ub2c8\ub2e4(<code>-embeddable<\/code> \uc0ad\uc81c). \uc774\ub7ec\ud55c \uc544\ud2f0\ud329\ud2b8\ub294 \uc0ac\uc6a9 \ucda9\ub3cc\uc744 \ubc29\uc9c0\ud558\uae30 \uc704\ud574 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \ud0c0\uc0ac \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc228\uae40 \ucc98\ub9ac\ud558\ub294 <code>kotlin-compiler-embeddable<\/code> \uc544\ud2f0\ud329\ud2b8\uc5d0 \uc885\uc18d\ub429\ub2c8\ub2e4. \uc774\ub984 \ubcc0\uacbd\uc744 \ud1b5\ud574 <code>kotlin-compiler-embeddable<\/code>(\uc77c\ubc18\uc801\uc73c\ub85c \ub354 \uc548\uc804\ud568) \uc544\ud2f0\ud329\ud2b8\uac00 \uc2a4\ud06c\ub9bd\ud2b8 \uc791\uc5c5 \uc2dc \ub514\ud3f4\ud2b8\ub85c \uc0ac\uc6a9\ub418\ub3c4\ub85d \ubcc0\uacbd\ud588\uc2b5\ub2c8\ub2e4.<br \/>\n\ud558\uc9c0\ub9cc \uc228\uae40 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc740 <code>kotlin-compiler<\/code>\uc5d0 \uc885\uc18d\ub41c \uc544\ud2f0\ud329\ud2b8\uac00 \ud544\uc694\ud55c \uacbd\uc6b0 <code>kotlin-scripting-jsr223-unshaded<\/code>\uc640 \uac19\uc774 <code>-unshaded<\/code> \uc811\ubbf8\uc5b4\uac00 \ud3ec\ud568\ub41c \uc544\ud2f0\ud329\ud2b8 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uc138\uc694. \uc774\ub984 \ubcc0\uacbd\uc774 \uc9c1\uc811 \uc0ac\uc6a9\ub418\uc5b4\uc57c \ud558\ub294 \uc2a4\ud06c\ub9bd\ud2b8 \uc791\uc5c5 \uc544\ud2f0\ud329\ud2b8\uc5d0\ub9cc \uc601\ud5a5\uc744 \ubbf8\uce5c\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. \ub2e4\ub978 \uc544\ud2f0\ud329\ud2b8 \uc774\ub984\uc740 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\ub85c \uc720\uc9c0\ub429\ub2c8\ub2e4.<\/p>\n<h2>CLion IDE \ud50c\ub7ec\uadf8\uc778 \uc0ac\uc6a9 \uc911\ub2e8<\/h2>\n<p>CLion IDE \ud50c\ub7ec\uadf8\uc778 \uc0ac\uc6a9 \uc911\ub2e8 \uc8fc\uae30\uac00 \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uae30\uc874\uc5d0 \ud574\ub2f9 \ud50c\ub7ec\uadf8\uc778\uc740 Kotlin\/Native \uc2e4\ud589 \ud30c\uc77c \ub514\ubc84\uadf8\uc6a9\uc73c\ub85c \uc81c\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c IntelliJ IDEA Ultimate\uc5d0\uc11c \ud638\ud658\uc774 \ub418\ubbc0\ub85c 1.4 \ub9b4\ub9ac\uc2a4 \uc774\ud6c4 CLion IDE \ud50c\ub7ec\uadf8\uc778 \ucd9c\uc2dc\ub294 \uc911\ub2e8\ub429\ub2c8\ub2e4. \uc774 \uc911\ub2e8\uc73c\ub85c \uc778\ud574 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uacbd\uc6b0 \uc800\ud76c \ud300\uc73c\ub85c \ubb38\uc758\ud574 \uc8fc\uc138\uc694. \ubb38\uc81c \ud574\uacb0\uc744 \uc9c0\uc6d0\ud558\uae30 \uc704\ud574 \ucd5c\uc120\uc744 \ub2e4\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ud638\ud658\uc131<\/h2>\n<p>\ubaa8\ub4e0 \uc8fc\uc694 \ub9b4\ub9ac\uc2a4\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c, \uc774\uc804\uc5d0 \uacf5\uac1c\ud588\ub358 \ubcc0\uacbd \uc0ac\ud56d\uc758 \uc77c\ubd80 \uc9c0\uc6d0 \uc911\ub2e8 \uc8fc\uae30\uac00 Kotlin 1.4\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\/reference\/compatibility-guide-14.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.4 \ud638\ud658\uc131 \uac00\uc774\ub4dc<\/a>\uc5d0 \ud45c\uc2dc\ub429\ub2c8\ub2e4. \ub610\ud55c \ud574\ub2f9 \ubcc0\uacbd \uc0ac\ud56d\uc744 <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=Tag:%20language-committee-approved%20Target%20versions:%201.4-RC,%201.4-M3,%201.4-M2,%201.4-M1,%201.4.0\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>\uc5d0\uc11c \ud655\uc778\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4 \uc548\ub0b4<\/h3>\n<blockquote>\n<p>Kotlin 1.4\uc758 \ucd5c\uc885 \ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4\uac00 \uacb0\uc815\ub418\uc5c8\uc73c\uba70 \uc774\uc81c \uc5ec\ub7ec\ubd84\uc774 \ucef4\ud30c\uc77c\ud558\uace0 \uac8c\uc2dc\ud560 \ucc28\ub840\uc785\ub2c8\ub2e4! \uae30\uc874 \uc8fc\uc694 \ub9b4\ub9ac\uc2a4\uc640\ub294 \ub2ec\ub9ac Kotlin 1.4.0-RC\uc5d0\uc11c \uc0dd\uc131\ub41c \ubc14\uc774\ub108\ub9ac\ub294 Kotlin 1.4.0\uacfc \ud638\ud658\uc131\uc774 \ubcf4\uc7a5\ub429\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n<h2>\ucd5c\uc2e0 \uae30\ub2a5 \uc0ac\uc6a9 \ubc29\ubc95<\/h2>\n<p><a name=\"how-to-try\"><\/a><\/p>\n<p>\uc5b8\uc81c\ub098\ucc98\ub7fc <a href=\"http:\/\/play.kotl.in\/\" target=\"_blank\" rel=\"noopener\">play.kotl.in<\/a>\uc5d0\uc11c <strong>Kotlin\uc744 \uc628\ub77c\uc778\uc5d0\uc11c \uc0ac\uc6a9<\/strong>\ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>IntelliJ IDEA \ubc0f Android Studio\uc5d0\uc11c Kotlin \ud50c\ub7ec\uadf8\uc778\uc744 1.4.0-RC \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/kotlinlang.org\/eap\/install-eap-plugin.html\" target=\"_blank\" rel=\"noopener\">\uc5c5\ub370\uc774\ud2b8 \ubc29\ubc95 \ubcf4\uae30<\/a><\/p>\n<p>\ud14c\uc2a4\ud2b8 \ubc84\uc804\uc744 \uc124\uce58\ud558\uae30 \uc804\uc5d0 \uc0dd\uc131\ub41c \uae30\uc874 \ud504\ub85c\uc81d\ud2b8\ub97c \uc791\uc5c5\ud558\ub824\uba74 <a href=\"https:\/\/kotlinlang.org\/eap\/configure-build-for-eap.html\" target=\"_blank\" rel=\"noopener\">Gradle \ub610\ub294 Maven\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc5d0 \ub300\ud55c \ube4c\ub4dc\ub97c \uad6c\uc131<\/a>\ud574\uc57c \ud569\ub2c8\ub2e4.  \uae30\uc874 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uacfc\ub294 \ub2ec\ub9ac Kotlin 1.4.0-RC\ub294 Maven Central\uc5d0\uc11c\ub3c4 \ubc14\ub85c \uc9c0\uc6d0\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \ube4c\ub4dc \ud30c\uc77c\uc5d0 <code>kotlin-eap<\/code> \uc800\uc7a5\uc18c\ub97c \uc218\ub3d9\uc73c\ub85c \ucd94\uac00\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba85\ub839\uc904 \ucef4\ud30c\uc77c\ub7ec\ub294 <a href=\"https:\/\/github.com\/JetBrains\/kotlin\/releases\/tag\/v1.4.0-rc\" target=\"_blank\" rel=\"noopener\">GitHub \ub9b4\ub9ac\uc2a4 \ud398\uc774\uc9c0<\/a>\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c \uc774\ubc88 \ub9b4\ub9ac\uc2a4\uc640 \ud568\uaed8 \uac8c\uc2dc\ub41c \ub2e4\uc74c \ubc84\uc804\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.atomicfu\" target=\"_blank\" rel=\"noopener\">kotlinx.atomicfu<\/a> \ubc84\uc804: <a href=\"https:\/\/bintray.com\/kotlin\/kotlinx\/kotlinx.atomicfu\/0.14.3-1.4.0-rc\" target=\"_blank\" rel=\"noopener\"><code>0.14.3-1.4.0-rc<\/code><\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.coroutines\" target=\"_blank\" rel=\"noopener\">kotlinx.coroutines<\/a> \ubc84\uc804: <a href=\"https:\/\/bintray.com\/kotlin\/kotlinx\/kotlinx.coroutines\/1.3.8-1.4.0-rc\" target=\"_blank\" rel=\"noopener\"><code>1.3.8-1.4.0-rc<\/code><\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.serialization\" target=\"_blank\" rel=\"noopener\">kotlinx.serialization<\/a> \ubc84\uc804: <a href=\"https:\/\/bintray.com\/kotlin\/kotlinx\/kotlinx.serialization.runtime\/1.0-M1-1.4.0-rc\" target=\"_blank\" rel=\"noopener\"><code>1.0-M1-1.4.0-rc<\/code><\/a><\/li>\n<li><a href=\"https:\/\/ktor.io\/\" target=\"_blank\" rel=\"noopener\">ktor<\/a> \ubc84\uc804: <a href=\"https:\/\/bintray.com\/kotlin\/ktor\/ktor\/1.3.2-1.4.0-rc\" target=\"_blank\" rel=\"noopener\"><code>1.3.2-1.4.0-rc<\/code><\/a><\/li>\n<\/ul>\n<p>\ub9b4\ub9ac\uc2a4\uc5d0 \uad00\ud55c \uc138\ubd80 \uc815\ubcf4 \ubc0f \ud638\ud658\ub418\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubaa9\ub85d\uc740 <a href=\"https:\/\/kotlinlang.org\/eap\/#build-details\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>\uc5d0 \ub098\uc640 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc758\uacac\uc744 \uacf5\uc720\ud574 \uc8fc\uc138\uc694<\/h2>\n<p><a name=\"share-your-feedback\"><\/a><br \/>\n\ubc84\uadf8\ub97c \ubc1c\uacac\ud558\uc2e0 \uacbd\uc6b0 <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">\uc774\uc288 \ud2b8\ub798\ucee4<\/a>\ub85c \ubcf4\uace0\ud574 \uc8fc\uc2dc\uba74 \ub300\ub2e8\ud788 \uac10\uc0ac\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc800\ud76c\ub294 \ucd5c\uc885 \ub9b4\ub9ac\uc2a4 \uc804\uc5d0 \ubaa8\ub4e0 \uc911\uc694\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub824\uace0 \ub178\ub825\ud558\uace0 \uc788\uc73c\ubbc0\ub85c \ub2e4\uc74c Kotlin \ub9b4\ub9ac\uc2a4\uae4c\uc9c0 \ubb38\uc81c\uac00 \ud574\uacb0\ub418\uae30\ub97c \uae30\ub2e4\ub9ac\uc2e4 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c \uc5b8\uc81c\ub4e0 \ub2e4\uc74c <a href=\"http:\/\/slack.kotlinlang.org\/\" target=\"_blank\" rel=\"noopener\">\ucd08\ub300<\/a> \ub9c1\ud06c\ub97c \ud1b5\ud574 <a href=\"https:\/\/app.slack.com\/client\/T09229ZC6\/C0KLZSCHF\" target=\"_blank\" rel=\"noopener\">Kotlin Slack<\/a>\uc758 <a href=\"https:\/\/app.slack.com\/client\/T09229ZC6\/C0KLZSCHF\" target=\"_blank\" rel=\"noopener\">#eap \ucc44\ub110<\/a>\uc5d0 \ucc38\uc5ec\ud558\uc5ec \uc9c8\ubb38\ud558\uace0 \ud1a0\ub860\uc5d0 \ucc38\uc5ec\ud558\uac70\ub098 \uc0c8\ub85c\uc6b4 \ud14c\uc2a4\ud2b8 \ubc84\uc804 \ube4c\ub4dc\uc5d0 \uad00\ud55c \uc54c\ub9bc\uc744 \ubc1b\uc544\ubcf4\uc138\uc694.<\/p>\n<p>Let\u2019s Kotlin!<\/p>\n<h2>\uc678\ubd80 \uae30\uc5ec\uc790<\/h2>\n<p><a name=\"external-contributions\"><\/a><br \/>\n\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<ul>\n<li><a href=\"https:\/\/github.com\/t-kameyama\" target=\"_blank\" rel=\"noopener\">Toshiaki Kameyama<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/sfs\" target=\"_blank\" rel=\"noopener\">Steven Sch\u00e4fer<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jsjeon\" target=\"_blank\" rel=\"noopener\">Jinseong Jeon<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/pyos\" target=\"_blank\" rel=\"noopener\">pyos<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/punzki\" target=\"_blank\" rel=\"noopener\">Mark Punzalan<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/rapturemain\" target=\"_blank\" rel=\"noopener\">rapturemain<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/tihonovcore\" target=\"_blank\" rel=\"noopener\">Vitaly<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/madsager\" target=\"_blank\" rel=\"noopener\">Mads Ager<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/subroh0508\" target=\"_blank\" rel=\"noopener\">Subroh Nishikori<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/juan-chen\" target=\"_blank\" rel=\"noopener\">Juan Chen<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/gcx11\" target=\"_blank\" rel=\"noopener\">gcx11<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/rbares\" target=\"_blank\" rel=\"noopener\">rbares<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/tunedal\" target=\"_blank\" rel=\"noopener\">Henrik Tunedal<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/efemoney\" target=\"_blank\" rel=\"noopener\">Efeturi Money<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Monchi\" target=\"_blank\" rel=\"noopener\">Yuku Kotani<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/11879032+Dmitry-Borodin\" target=\"_blank\" rel=\"noopener\">Dmitry Borodin<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/McCreeMainer\" target=\"_blank\" rel=\"noopener\">Mikhail Likholetov<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/mikesamuel\" target=\"_blank\" rel=\"noopener\">Mike Samuel<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/gharrma\" target=\"_blank\" rel=\"noopener\">Matthew Gharrity<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jimgoog\" target=\"_blank\" rel=\"noopener\">Jim Sproch<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/rsauciuc\" target=\"_blank\" rel=\"noopener\">Raluca Sauciuc<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/mpetrov\" target=\"_blank\" rel=\"noopener\">Martin Petrov<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/segunfamisa\" target=\"_blank\" rel=\"noopener\">Segun Famisa<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/kozaxinan\" target=\"_blank\" rel=\"noopener\">Sinan Kozak<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/kandersen\" target=\"_blank\" rel=\"noopener\">Kristoffer Andersen<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/anstkras\" target=\"_blank\" rel=\"noopener\">Anastasiya Krasnoryadtseva<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vadimsemenov\" target=\"_blank\" rel=\"noopener\">Vadim Semenov<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/kevinmost\" target=\"_blank\" rel=\"noopener\">Kevin Most<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/valery1707\" target=\"_blank\" rel=\"noopener\">Valeriy Vyrva<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/turansky\" target=\"_blank\" rel=\"noopener\">Victor Turansky<\/a><\/li>\n<\/ul>\n<p>\n<em>\uc774 \uac8c\uc2dc\ubb3c\uc740 <a href=\"https:\/\/blog.jetbrains.com\/author\/sebastian_aigner\/\">Sebastian Aigner<\/a>\uac00 \uc791\uc131\ud55c <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/07\/kotlin-1-4-rc-released\/\">Kotlin 1.4.0-RC Released<\/a>\ub97c \ubc88\uc5ed\ud55c \uae00\uc785\ub2c8\ub2e4.<\/em><\/p>\n","protected":false},"author":964,"featured_media":59248,"comment_status":"open","ping_status":"closed","template":"","categories":[4113],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/65456"}],"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=65456"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/65456\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/59248"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=65456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=65456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=65456"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=65456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}