{"id":121433,"date":"2021-03-05T04:49:23","date_gmt":"2021-03-05T03:49:23","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=121433"},"modified":"2021-03-05T04:49:23","modified_gmt":"2021-03-05T03:49:23","slug":"lanzamos-la-version-1-4-30-con-un-nuevo-backend-jvm-y-funcionalidades-de-lenguaje-y-multiplataforma","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/es\/kotlin\/2021\/03\/lanzamos-la-version-1-4-30-con-un-nuevo-backend-jvm-y-funcionalidades-de-lenguaje-y-multiplataforma\/","title":{"rendered":"Lanzamos la versi\u00f3n 1.4.30 con un nuevo backend JVM y funcionalidades de lenguaje y multiplataforma"},"content":{"rendered":"<p>Kotlin 1.4.30 ya est\u00e1 disponible. Este es el \u00faltimo lanzamiento incremental 1.4, as\u00ed que tenemos muchas funcionalidades experimentales que planeamos hacer estables en la versi\u00f3n 1.5.0. Nos encantar\u00eda que las probase y compartiera su opini\u00f3n con nosotros. Esperamos que disfrute <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#how-to-update\">probando<\/a> todas estas nuevas actualizaciones; no dude en decirnos lo que piensa de ellas.<\/p>\n<\/p>\n<p>Novedades de esta versi\u00f3n:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#language-features-compiler\">Compilador y funcionalidades de lenguaje<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#compiler\">El nuevo backend JVM ha pasado a beta.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#language-features\">Clases de valor, registros JVM y actualizaci\u00f3n de interfaces selladas.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#build-tools\">Herramientas de compilaci\u00f3n<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#cache-support\">Compatibilidad con cach\u00e9 de configuraci\u00f3n en el complemento Gradle para Kotlin.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#kotlin-native\">Kotlin\/Native<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#performance-improvements\">Mejoras en los tiempos de compilaci\u00f3n.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#64-bit-watchos-simulator-support\">Compatibilidad con el simulador de watchOS de 64 bits.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#xcode-sdk-support\">Compatibilidad con el SDK de Xcode 12.2.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#kotlin-js\">Kotlin\/JS<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#prototype-lazy-initialization\">Inicializaci\u00f3n diferida de prototipos para propiedades de nivel superior.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#standard-library\">Biblioteca est\u00e1ndar<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#locale-agnostic-api\">API independiente de configuraci\u00f3n regional para texto en may\u00fasculas\/min\u00fasculas.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#char-conversion\">API inequ\u00edvoca para conversi\u00f3n de char.<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Compilador y funcionalidades de lenguaje<\/h2>\n<p><a name = \"language-features-compiler\"><\/a><\/p>\n<p>Hemos decidido abarcar dos de las actualizaciones m\u00e1s importantes en publicaciones diferentes del blog para poder ofrecerles m\u00e1s detalles sobre estas funcionalidades. <\/p>\n<h3>Compilador<\/h3>\n<p><a name = \"compiler\"><\/a><\/p>\n<p>El nuevo backend JVM ha llegado a <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">Beta<\/a> y ahora produce binarios estables. Esto significa que puede utilizarlo con seguridad en sus proyectos. <\/p>\n<p>Puede encontrar m\u00e1s informaci\u00f3n sobre la actualizaci\u00f3n, los modos de habilitar el nuevo backend IR JVM y c\u00f3mo puede favorecer su estabilizaci\u00f3n <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/the-jvm-backend-is-in-beta-let-s-make-it-stable-together\/\">aqu\u00ed<\/a>.<\/p>\n<h3>Avance de las nuevas funcionalidades de lenguaje<\/h3>\n<p><a name = \"language-features\"><\/a><\/p>\n<p>Entre las nuevas funcionalidades de lenguaje que planeamos publicar en Kotlin 1.5.0 est\u00e1n las <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42434?_ga=2.184548070.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">clases de valor inline<\/a>, <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42430?_ga=2.184548070.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">registros JVM<\/a> e <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42433?_ga=2.154677880.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">interfaces selladas<\/a>. Puede leer m\u00e1s informaci\u00f3n sobre ellas en <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/new-language-features-preview-in-kotlin-1-4-30\/\">esta publicaci\u00f3n<\/a> y aqu\u00ed tiene un breve avance:<\/p>\n<p><strong>Clases inline.<\/strong> Previamente, las clases inline eran una funcionalidad de lenguaje independiente, pero ahora se han convertido en una optimizaci\u00f3n espec\u00edfica de JVM para una clase de valor con un par\u00e1metro. Las clases de valor representan un concepto m\u00e1s general y admitir\u00e1n diferentes optimizaciones en el futuro. Actualmente admiten clases inline y admitir\u00e1n clases primitivas Valhalla cuando el proyecto Valhalla est\u00e9 disponible.<\/p>\n<p><strong>Registros Java.<\/strong> Otra mejora pr\u00f3xima en el ecosistema JVM son los <a href=\"https:\/\/openjdk.java.net\/jeps\/395\" target=\"_blank\" rel=\"noopener\">registros Java<\/a>. Son an\u00e1logos a las clases de <code>datos<\/code> de Kotlin, que se utilizan principalmente como contenedores de los datos. La interoperabilidad con Java siempre ha sido y ser\u00e1 una prioridad para Kotlin. El c\u00f3digo de Kotlin \u00abcomprende\u00bb los nuevos registros Java y los ve como clases con propiedades de Kotlin.<\/p>\n<p><strong>Interfaces selladas.<\/strong> Las interfaces se pueden declarar selladas, al igual que las clases. El modificador sellado funciona en interfaces del mismo modo: todas las implementaciones de una interfaz sellada se conocen en el tiempo de compilaci\u00f3n. Una vez que se ha compilado una interfaz sellada, no pueden aparecer implementaciones nuevas.<\/p>\n<p>Por tanto, le sugerimos que pruebe estas funcionalidades de lenguaje y que comparta su opini\u00f3n con nosotros. Nos gustar\u00eda conocer sus expectativas respecto a estas funcionalidades, los casos de uso en los que las quiere aplicar y cualquier sugerencia o idea que tenga sobre ellas. <\/p>\n<p>Puede obtener una descripci\u00f3n detallada de las nuevas funcionalidades de lenguaje e instrucciones sobre c\u00f3mo probarlas en <a href=\"https:\/\/blog.jetbrains.com\/?post_type=kotlin&amp;p=111522&amp;preview=true&amp;do_not_cache=1612175412\">esta publicaci\u00f3n del blog<\/a>.<\/p>\n<h2>Herramientas de compilaci\u00f3n<\/h2>\n<p><a name = \"build-tools\"><\/a><\/p>\n<h3>Compatibilidad con cach\u00e9 de configuraci\u00f3n en el complemento Gradle para Kotlin<\/h3>\n<p><a name = \"cache-support\"><\/a><\/p>\n<p>A partir de Kotlin 1.4.30, el complemento Gradle para Kotlin es compatible con la <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/configuration_cache.html\" target=\"_blank\" rel=\"noopener\">cach\u00e9 de configuraci\u00f3n de Gradle<\/a>. Esto acelera el proceso de compilaci\u00f3n. Por ejemplo, <a href=\"https:\/\/squareup.com\" target=\"_blank\" rel=\"noopener\">Square<\/a>, que emplea Kotlin para Android, tiene un build (Android, Java, Kotlin) de 1800 m\u00f3dulos. Su equipo comunica los n\u00fameros siguientes:<\/p>\n<ul>\n<li>El primer build tard\u00f3 16 minutos y 30 segundos.<\/li>\n<li>El segundo fue mucho m\u00e1s corto; tard\u00f3 5 minutos y 45 segundos.<br \/>\nEn concreto, para Square, la cach\u00e9 de configuraci\u00f3n ahorra 1 minuto y 10 segundos de configuraci\u00f3n y creaci\u00f3n de gr\u00e1fico de tarea por build.<\/li>\n<\/ul>\n<p>Cuando ejecuta el comando, Gradle ejecuta la fase de configuraci\u00f3n y calcula el gr\u00e1fico de tarea. Gradle almacena en cach\u00e9 el resultado y lo reutiliza para builds posteriores, lo que le ahorra tiempo.<\/p>\n<p>Para empezar a utilizar esta funcionalidad, <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/configuration_cache.html#config_cache:usage\" target=\"_blank\" rel=\"noopener\">utilice el comando de Gradle <\/a> o <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/configuration_cache.html#config_cache:ide:intellij\" target=\"_blank\" rel=\"noopener\">configure su IDE basado en IntelliJ<\/a>. Y si algo no funciona como esperaba, puede informar al respecto a trav\u00e9s de <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>. <\/p>\n<p>Tenga en cuenta que esta funcionalidad todav\u00eda est\u00e1 en <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">Alpha<\/a> para multiplataforma.<\/p>\n<h2>Kotlin\/Native<\/h2>\n<p><a name = \"kotlin-native\"><\/a><\/p>\n<h3>Mejoras en los tiempos de compilaci\u00f3n<\/h3>\n<p><a name = \"performance-improvements\"><\/a><\/p>\n<p>Hemos mejorado los tiempos de compilaci\u00f3n en la versi\u00f3n 1.4.30. El tiempo necesario para crear el marco de trabajo de la <a href=\"https:\/\/github.com\/kotlin-hands-on\/kmm-networking-and-data-storage\/tree\/final\" target=\"_blank\" rel=\"noopener\">muestra de almacenamiento de datos y redes KMM<\/a> se ha reducido de 9,5 segundos (en la versi\u00f3n 1.4.10) a 4,5 segundos (en la versi\u00f3n 1.4.30).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/02\/image-18-1024x582.png\" alt=\"\" \/><\/p>\n<p>Planeamos seguir optimizando el compilador. Puede seguir la incidencia en <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42294?_ga=2.78639700.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<h3>Compatibilidad con el simulador de watchOS de 64 bits<\/h3>\n<p><a name = \"64-bit-watchos-simulator-support\"><\/a><\/p>\n<p>Con la publicaci\u00f3n de la <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/11\/kotlin-1-3-60-released\/\">versi\u00f3n 1.3.60 de Kotlin<\/a> en October 2018, introdujimos la compatibilidad con la creaci\u00f3n de aplicaciones de Kotlin para los simuladores de Apple Watch. En noviembre pasado, la arquitectura del simulador de Apple Watch se cambi\u00f3 de i386 a x86_64, lo que cre\u00f3 problemas a los desarrolladores que trabajan en esta funcionalidad. El nuevo destino <code>watchosX64<\/code> de Kotlin\/Native se puede utilizar para ejecutar el simulador de watchOS en arquitectura de 64 bits y funciona en WatchOS a partir de la versi\u00f3n 7.0.<\/p>\n<h3>Compatibilidad con el SDK de Xcode 12.2<\/h3>\n<p><a name = \"xcode-sdk-support\"><\/a><\/p>\n<p>Kotlin\/Native ahora admite Xcode 12.2. Los marcos de trabajo de macOS que se han a\u00f1adido a la versi\u00f3n 12.2 de Xcode se pueden utilizar con esta actualizaci\u00f3n de Kotlin. Por ejemplo, ahora est\u00e1 disponible el marco de trabajo MLCompute para los usuarios que desarrollan aplicaciones para macOS.<\/p>\n<h2>Kotlin\/JS<\/h2>\n<p><a name = \"kotlin-js\"><\/a><\/p>\n<h3>Inicializaci\u00f3n diferida de prototipos para propiedades de nivel superior<\/h3>\n<p><a name = \"prototype-lazy-initialization\"><\/a><\/p>\n<p>Hemos hecho disponible la inicializaci\u00f3n diferida de propiedades de nivel superior como <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">Experimental<\/a>. Puede leer m\u00e1s sobre esto en las <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew1430.html\" target=\"_blank\" rel=\"noopener\">Novedades<\/a>.<\/p>\n<h2>Biblioteca est\u00e1ndar<\/h2>\n<p><a name = \"standard-library\"><\/a><\/p>\n<h3>API independiente de configuraci\u00f3n regional para texto en may\u00fasculas\/min\u00fasculas<\/h3>\n<p><a name = \"locale-agnostic-api\"><\/a><\/p>\n<p>Esta versi\u00f3n introduce una <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">API independiente de configuraci\u00f3n regional experimental<\/a> para cambiar el uso de may\u00fasculas y min\u00fasculas de cadenas y caracteres. Las funciones actuales <code>toLowerCase()<\/code>, <code>toUpperCase()<\/code>, <code>capitalize()<\/code>, <code>decapitalize()<\/code> de la API son sensibles a la configuraci\u00f3n regional, lo que no es obvio y resulta inconveniente en algunos casos. En el caso de diferentes ajustes de la configuraci\u00f3n regional de la plataforma, afecta al comportamiento del c\u00f3digo. Por ejemplo, en la configuraci\u00f3n regional de turco, cuando <code>toUpperCase<\/code> convierte la cadena \u00abkotlin\u00bb, el resultado es &quot;KOTL\u0130N&quot;, no &quot;KOTLIN&quot;. Ahora utiliza la configuraci\u00f3n regional ra\u00edz, por lo que funcionar\u00e1 como cabr\u00eda esperar.<\/p>\n<p>Puede ver la lista completa de cambios de las funciones de procesamiento de texto en <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/stdlib\/locale-agnostic-string-conversions.md\" target=\"_blank\" rel=\"noopener\">KEEP<\/a>. Recuerde que esta API es experimental. Le agradecer\u00edamos que compartiese sus comentarios con nosotros en <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42437\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<h3>API inequ\u00edvoca para conversi\u00f3n de char<\/h3>\n<p><a name = \"char-conversion\"><\/a><\/p>\n<p>Las funciones de conversi\u00f3n actuales de char a n\u00fameros, que devuelve su c\u00f3digo UTF-16 expresado en distintos tipos num\u00e9ricos, a menudo se confunden con la conversi\u00f3n similar de cadena a int que devuelve el valor num\u00e9rico de una cadena.<\/p>\n<p>Para evitar esta confusi\u00f3n, hemos decidido separar las conversiones de char en los dos siguientes conjuntos de funciones con un nombre claro: funciones para obtener el c\u00f3digo entero de <code>char<\/code> y para construir <code>char<\/code>, y funciones para convertir <code>char<\/code> al valor num\u00e9rico del d\u00edgito que representa.<\/p>\n<p>Esta funcionalidad tambi\u00e9n es <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">Experimental<\/a>, pero planeamos que sea estable para la versi\u00f3n 1.5.0. Ver m\u00e1s detalles en <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/stdlib\/char-int-conversions.md\" target=\"_blank\" rel=\"noopener\">KEEP<\/a>.<\/p>\n<h3>Obtenga m\u00e1s informaci\u00f3n sobre todas las actualizaciones de la versi\u00f3n 1.4.30 en las <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew1430.html\" target=\"_blank\" rel=\"noopener\">Novedades<\/a> y en las publicaciones del blog sobre el <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/the-jvm-backend-is-in-beta-let-s-make-it-stable-together\/\">nuevo backend JVM<\/a> y sobre las <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/new-language-features-preview-in-kotlin-1-4-30\/\">funcionalidades de lenguaje<\/a>.<\/h3>\n<h2>C\u00f3mo actualizar<\/h2>\n<p><a name = \"how-to-update\"><\/a><\/p>\n<p>IntelliJ IDEA le sugerir\u00e1 la actualizaci\u00f3n del complemento de Kotlin a la versi\u00f3n 1.4.30 de forma autom\u00e1tica, pero tambi\u00e9n puede actualizarlo de forma manual siguiendo <a href=\"https:\/\/kotlinlang.org\/docs\/releases.html#update-to-a-new-release\" target=\"_blank\" rel=\"noopener\">estas instrucciones<\/a>. El complemento de Kotlin para Android Studio Arctic Fox se lanzar\u00e1 m\u00e1s adelante.<\/p>\n<p>Si desea trabajar en proyectos existentes creados con versiones anteriores de Kotlin, utilice la versi\u00f3n 1.4.30 de Kotlin en la configuraci\u00f3n de su proyecto. Para obtener m\u00e1s informaci\u00f3n, vea los documentos <a href=\"http:\/\/kotlinlang.org\/docs\/reference\/using-gradle.html\" target=\"_blank\" rel=\"noopener\">para Gradle<\/a> y <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/using-maven.html\" target=\"_blank\" rel=\"noopener\">para Maven<\/a>.<\/p>\n<p>Puede descargar el compilador de l\u00ednea de comando desde la <a href=\"https:\/\/github.com\/JetBrains\/kotlin\/releases\/tag\/v1.4.30\" target=\"_blank\" rel=\"noopener\">p\u00e1gina de lanzamiento de GitHub<\/a>.<\/p>\n<p>Los detalles del lanzamiento y la lista de bibliotecas compatibles est\u00e1n disponibles <a href=\"https:\/\/kotlinlang.org\/releases.html#release-details\" target=\"_blank\" rel=\"noopener\">aqu\u00ed<\/a>.<\/p>\n<p>Si encuentra alg\u00fan problema con la nueva versi\u00f3n, encontrar\u00e1 ayuda en <a href=\"http:\/\/kotlinlang.slack.com\/\" target=\"_blank\" rel=\"noopener\">Slack<\/a> (obtenga una invitaci\u00f3n <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-slack-sign-up?_ga=2.134077326.1218289669.1605167163-154294388.1603171954\" target=\"_blank\" rel=\"noopener\">aqu\u00ed<\/a>) e informe acerca de las incidencias en nuestro <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<p>Antes de actualizar sus proyectos a la versi\u00f3n m\u00e1s reciente de Kotlin, puede probar el nuevo lenguaje y las funcionalidades de biblioteca est\u00e1ndar online en <a href=\"http:\/\/play.kotl.in\/\" target=\"_blank\" rel=\"noopener\">play.kotl.in<\/a>.<\/p>\n<h2>Colaboradores externos<\/h2>\n<p>Queremos agradecer a todos los contribuidores externos cuyas solicitudes de incorporaci\u00f3n de cambios se han incluido en esta versi\u00f3n:<\/p>\n<p><a href=\"https:\/\/github.com\/jsjeon\" target=\"_blank\" rel=\"noopener\">Jinseong Jeon<\/a><br \/>\n<a href=\"https:\/\/github.com\/t-kameyama\" target=\"_blank\" rel=\"noopener\">Toshiaki Kameyama<\/a><br \/>\n<a href=\"https:\/\/github.com\/pyos\" target=\"_blank\" rel=\"noopener\">pyos<\/a><br \/>\n<a href=\"https:\/\/github.com\/madsager\" target=\"_blank\" rel=\"noopener\">Mads Ager<\/a><br \/>\n<a href=\"https:\/\/github.com\/sfs\" target=\"_blank\" rel=\"noopener\">Steven Sch\u00e4fer<\/a><br \/>\n<a href=\"https:\/\/github.com\/punzki\" target=\"_blank\" rel=\"noopener\">Mark Punzalan<\/a><br \/>\n<a href=\"https:\/\/github.com\/gavra0\" target=\"_blank\" rel=\"noopener\">Ivan Gavrilovic<\/a><br \/>\n<a href=\"https:\/\/github.com\/kandersen\" target=\"_blank\" rel=\"noopener\">Kristoffer Andersen<\/a><br \/>\n<a href=\"https:\/\/github.com\/bingranl\" target=\"_blank\" rel=\"noopener\">Bingran<\/a><br \/>\n<a href=\"https:\/\/github.com\/juan-chen\" target=\"_blank\" rel=\"noopener\">Juan Chen<\/a><br \/>\n<a href=\"https:\/\/github.com\/zhelenskiy\" target=\"_blank\" rel=\"noopener\">zhelenskiy<\/a><br \/>\n<a href=\"https:\/\/github.com\/zekehul\" target=\"_blank\" rel=\"noopener\">Kris<\/a><br \/>\n<a href=\"https:\/\/github.com\/hungvietnguyen\" target=\"_blank\" rel=\"noopener\">Hung Nguyen<\/a><br \/>\n<a href=\"https:\/\/github.com\/turansky\" target=\"_blank\" rel=\"noopener\">Victor Turansky<\/a><br \/>\n<a href=\"https:\/\/github.com\/ajalt\" target=\"_blank\" rel=\"noopener\">AJ<\/a><br \/>\n<a href=\"https:\/\/github.com\/LouisCAD\" target=\"_blank\" rel=\"noopener\">Louis CAD<\/a><br \/>\n<a href=\"https:\/\/github.com\/kevin1e100\" target=\"_blank\" rel=\"noopener\">Kevin Bierhoff<\/a><br \/>\n<a href=\"https:\/\/github.com\/HollowMan6\" target=\"_blank\" rel=\"noopener\">Hollow Man<\/a><br \/>\n<a href=\"https:\/\/github.com\/fvasco\" target=\"_blank\" rel=\"noopener\">Francesco Vasco<\/a><br \/>\n<a href=\"https:\/\/github.com\/uzilan\" target=\"_blank\" rel=\"noopener\">Uzi Landsmann<\/a><br \/>\n<a href=\"https:\/\/github.com\/dominikwuttke\" target=\"_blank\" rel=\"noopener\">Dominik Wuttke<\/a><br \/>\n<a href=\"https:\/\/github.com\/bodin\" target=\"_blank\" rel=\"noopener\">Derek Bodin<\/a><br \/>\n<a href=\"https:\/\/github.com\/ciarant\" target=\"_blank\" rel=\"noopener\">Ciaran Treanor<\/a><br \/>\n<a href=\"https:\/\/github.com\/rbares\" target=\"_blank\" rel=\"noopener\">rbares<\/a><br \/>\n<a href=\"https:\/\/github.com\/mpetrov\" target=\"_blank\" rel=\"noopener\">Martin Petrov<\/a><br \/>\n<a href=\"https:\/\/github.com\/yurano\" target=\"_blank\" rel=\"noopener\">Yuya Urano<\/a><br \/>\n<a href=\"https:\/\/github.com\/KotlinIsland\" target=\"_blank\" rel=\"noopener\">KotlinIsland<\/a><br \/>\n<a href=\"https:\/\/github.com\/neetopia\" target=\"_blank\" rel=\"noopener\">Jiaxiang Chen<\/a><br \/>\n<a href=\"https:\/\/github.com\/JakeWharton\" target=\"_blank\" rel=\"noopener\">Jake Wharton<\/a><br \/>\n<a href=\"https:\/\/github.com\/samofcorinth\" target=\"_blank\" rel=\"noopener\">Sam Wang<\/a><br \/>\n<a href=\"https:\/\/github.com\/MikeKulasinski-visa\" target=\"_blank\" rel=\"noopener\">MikeKulasinski-visa<\/a><br \/>\n<a href=\"https:\/\/github.com\/gharrma\" target=\"_blank\" rel=\"noopener\">Matthew Gharrity<\/a><br \/>\n<a href=\"https:\/\/github.com\/McCreeMainer\" target=\"_blank\" rel=\"noopener\">Mikhail Likholetov<\/a><\/p>\n","protected":false},"author":1086,"featured_media":113713,"comment_status":"closed","ping_status":"closed","template":"","categories":[4113,907],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/121433"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/comments?post=121433"}],"version-history":[{"count":1,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/121433\/revisions"}],"predecessor-version":[{"id":121436,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/121433\/revisions\/121436"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media\/113713"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media?parent=121433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/categories?post=121433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/tags?post=121433"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/cross-post-tag?post=121433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}