CINXE.COM
Releases · JetBrains/kotlin · GitHub
<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-3e154969b9f9.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-afda8eb0fb33.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-2494e44ccdc5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-56fff47acadc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-71cd4cc132ec.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fd5499848985.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-31d17ba3e139.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-68d6b2c79663.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-4cf0d59ab51a.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-af846850481e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-8b10f05a77e6.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-2f6e722088eb.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-9c77ed90200e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/releases-d27bae89dc62.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_new_references_ui","copilot_beta_features_opt_in","copilot_chat_static_thread_suggestions","copilot_conversational_ux_history_refs","copilot_implicit_context","copilot_smell_icebreaker_ux","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hovercard_accessibility","issues_react_new_timeline","issues_react_avatar_refactor","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","react_keyboard_shortcuts_dialog","remove_child_patch","sample_network_conn_type","site_metered_billing_update","issues_react_first_time_contribution_banner","lifecycle_label_name_updates"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-6657579a8825.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b73fdff77a4e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-aff936e590ed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-247092-740e4ddd559d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-93b6a0551aa9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-cd35650c2e9c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-4aa4b0e95669.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-6d3967acd51c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_combobox-nav_dist_index_js-node_modules_github_g-emoji-element_di-6ce195-53781cbc550f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-6afc16-3cdfa69a0406.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-f5498b8d4e5d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-492b5042c841.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1f651a-1e3d784c897c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-7671f1-dc6cac136d88.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-71486356f507.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-e3ab8405ef80.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-634de60bacfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ce7225a304c5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-f3aee1-e6893db9c19e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-f8a5485c982a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-858e043fcf76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_stacktrace-pa-a71630-6f3c4f0189d8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-0e07cc183eed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-0b5e12-889cec8cf448.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eae9df0dd562.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-18d1c91a7872.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-7cbef09a422c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-0e9fa537dc4f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-c89801ebbe15.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-a6e4c4c86bfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-3366f6b6298e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_template-parts_lib_index_js-96453a51f920.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_decorators_js-node_modules_delegated-events_di-cc9bcb-ea42a360c5ae.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_filter--35675b-aff280068839.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-043af64042a1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-ce9ff2a57e1f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-765944243383.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-cd0a67881543.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryClient_js-e40bb86d3e93.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-37e3d5-31653d7f2342.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-285fc29e9fa5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-4896ddd4b7bb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-3eda30673b32.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>Releases · JetBrains/kotlin · GitHub</title> <meta name="route-pattern" content="/:user_id/:repository/releases(.:format)" data-turbo-transient> <meta name="route-controller" content="releases" data-turbo-transient> <meta name="route-action" content="index" data-turbo-transient> <meta name="current-catalog-service-hash" content="6f13f31f798a93a6b08d3be0727120e9af35851fac7b9c620d6cf9a70068c136"> <meta name="request-id" content="A78E:42B4C:72BCE:83757:674AE861" data-pjax-transient="true"/><meta name="html-safe-nonce" content="ca61c2a70cb4bd95f94f8e67e6168185322629e49710a4ce3bc69df5e77da39a" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNzhFOjQyQjRDOjcyQkNFOjgzNzU3OjY3NEFFODYxIiwidmlzaXRvcl9pZCI6IjU5NjE4OTI2NzcwOTU3MTI4NjUiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="13578eecaaf5d5711f2abc2302616cfb68e659609f10091ff8caf44b8b983428" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:3432266" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="repo_releases" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="analytics-location" content="/<user-name>/<repo-name>/releases/index" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="The Kotlin Programming Language. . Contribute to JetBrains/kotlin development by creating an account on GitHub."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/JetBrains/kotlin/releases" /> <meta name="twitter:image" content="https://repository-images.githubusercontent.com/3432266/7e79bf80-7aa6-11eb-9cbd-d7bda7eaf1aa" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="Releases · JetBrains/kotlin" /><meta name="twitter:description" content="The Kotlin Programming Language. . Contribute to JetBrains/kotlin development by creating an account on GitHub." /> <meta property="og:image" content="https://repository-images.githubusercontent.com/3432266/7e79bf80-7aa6-11eb-9cbd-d7bda7eaf1aa" /><meta property="og:image:alt" content="The Kotlin Programming Language. . Contribute to JetBrains/kotlin development by creating an account on GitHub." /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="Releases · JetBrains/kotlin" /><meta property="og:url" content="/JetBrains/kotlin/releases" /><meta property="og:description" content="The Kotlin Programming Language. . Contribute to JetBrains/kotlin development by creating an account on GitHub." /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="0361a11d6ba7285e98ad3340b1de5998c1adf9be672ff350e645684a12c5ff34" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="ace39c3b6632770952207593607e6e0be0db363435a8b877b1f96abe6430f345" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="3adbaefc258174e49a9472f62ba4ed262e7c0112f9e7266a3e927bd7b898716f" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="58069173ba3ee40a605f317588f70346d3cda2c3c32d767dd6d2909bbe343612" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <link rel="alternate" type="application/atom+xml" title="kotlin Release Notes" href="https://github.com/JetBrains/kotlin/releases.atom" /> <link rel="alternate" type="application/atom+xml" title="kotlin Tags" href="https://github.com/JetBrains/kotlin/tags.atom" /> <meta name="go-import" content="github.com/JetBrains/kotlin git https://github.com/JetBrains/kotlin.git"> <meta name="octolytics-dimension-user_id" content="878437" /><meta name="octolytics-dimension-user_login" content="JetBrains" /><meta name="octolytics-dimension-repository_id" content="3432266" /><meta name="octolytics-dimension-repository_nwo" content="JetBrains/kotlin" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="3432266" /><meta name="octolytics-dimension-repository_network_root_nwo" content="JetBrains/kotlin" /> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-765944243383.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-cd0a67881543.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryClient_js-e40bb86d3e93.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-37e3d5-31653d7f2342.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-285fc29e9fa5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-4896ddd4b7bb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-f3cc184507a7.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-cf3dd69d89eb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-8fa3b694f335.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FJetBrains%2Fkotlin%2Freleases" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/JetBrains/kotlin/releases","user_id":null}}" data-hydro-click-hmac="d62af639576448432fcb8d2ee6ab3ce40d6ba51b2af1fd37415dbf083b8f8c1a" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"white_papers_ebooks_webinars","context":"resources","tag":"link","label":"white_papers_ebooks_webinars_link_resources_navbar"}" href="https://resources.github.com"> White papers, Ebooks, Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"enterprise","tag":"link","label":"github_copilot_link_enterprise_navbar"}" href="/features/copilot#enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="repo:JetBrains/kotlin" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="H_zHyv1qhg48PvaPZg5fm5VolAoANXraXjTccv5TLZj6mJh-NwYqTBFt4ccze2W68LCl096Li0_m2cAC6jai4w" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="JetBrains/kotlin" data-current-org="JetBrains" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-9d851b92-6e4b-434e-96dc-b9d82563cf5f" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-9d851b92-6e4b-434e-96dc-b9d82563cf5f" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2"> Search syntax tips </a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="lkTduMpXDtO94F5mJtCPfw0M/z+JrCb8kpB2j7jgWB+ettEvyUo+2cIq12ry7HoKY1Nel88MzjPJ0IzCwakZ5g==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="NgtPxba+QQTaDe9TtEtQPaYWAHQj7K0R/KNJ0ZagPDLJA1OQlMGQ5gdqWel8mSpWY7CU0uF0pdqQOu4hQ17pKA==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="FmsmOW1eBENop5zbildPMC02uNGBW/86brEuY2SsWwIAFChkUzdtT6bt+QzlFl8XKDsIFJBDkigP6v9M/VhKZA==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FJetBrains%2Fkotlin%2Freleases" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/JetBrains/kotlin/releases","user_id":null}}" data-hydro-click-hmac="d62af639576448432fcb8d2ee6ab3ce40d6ba51b2af1fd37415dbf083b8f8c1a" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Freleases%2Findex&source=header-repo&source_repo=JetBrains%2Fkotlin" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/JetBrains/kotlin/releases","user_id":null}}" data-hydro-click-hmac="d62af639576448432fcb8d2ee6ab3ce40d6ba51b2af1fd37415dbf083b8f8c1a" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/<user-name>/<repo-name>/releases/index;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-36f9804d-b2e0-42b2-bc85-b5dbb7a8c83b" aria-labelledby="tooltip-b8948b01-9bce-48da-b874-4f885b1614f7" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-b8948b01-9bce-48da-b874-4f885b1614f7" for="icon-button-36f9804d-b2e0-42b2-bc85-b5dbb7a8c83b" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" > <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace> <div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit"> <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/JetBrains/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/JetBrains"> JetBrains </a> </span> <span class="mx-1 flex-self-stretch color-fg-muted">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/JetBrains/kotlin">kotlin</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> </div> <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;"> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a href="/login?return_to=%2FJetBrains%2Fkotlin" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/JetBrains/kotlin/releases","user_id":null}}" data-hydro-click-hmac="140799b0e6199ddfa75353a118aa9604d59cec296f611f1541125a4aae11e05c" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-f08588a4-9be2-43af-8629-9f9388ba537b" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </li> <li> <a icon="repo-forked" id="fork-button" href="/login?return_to=%2FJetBrains%2Fkotlin" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":3432266,"auth_type":"LOG_IN","originating_url":"https://github.com/JetBrains/kotlin/releases","user_id":null}}" data-hydro-click-hmac="a0e66f9faf7cff6db83ead3451f74d6f6d5fc14da4234e90ef9bfca98cd4dbc2" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg>Fork <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="5,791" data-view-component="true" class="Counter">5.8k</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FJetBrains%2Fkotlin" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":3432266,"auth_type":"LOG_IN","originating_url":"https://github.com/JetBrains/kotlin/releases","user_id":null}}" data-hydro-click-hmac="844a6ae14dae491523adc770d3e85d11160c39bee78f8d3695739ec4594685f0" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="49495 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="49,495" data-view-component="true" class="Counter js-social-count">49.5k</span> </a></div> </li> </ul> </div> </div> <div id="responsive-meta-container" data-turbo-replace> </div> <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5"> <ul data-view-component="true" class="UnderlineNav-body list-style-none"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab" href="/JetBrains/kotlin" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /JetBrains/kotlin" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Code","target":"UNDERLINE_NAV.TAB"}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> <span data-content="Code">Code</span> <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/JetBrains/kotlin/pulls" data-tab-item="i1pull-requests-tab" data-selected-links="repo_pulls checks /JetBrains/kotlin/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Pull requests","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> <span data-content="Pull requests">Pull requests</span> <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="176" data-view-component="true" class="Counter">176</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/JetBrains/kotlin/actions" data-tab-item="i2actions-tab" data-selected-links="repo_actions /JetBrains/kotlin/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Actions","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> <span data-content="Actions">Actions</span> <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="security-tab" href="/JetBrains/kotlin/security" data-tab-item="i3security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /JetBrains/kotlin/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Security","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span data-content="Security">Security</span> <include-fragment src="/JetBrains/kotlin/security/overall-count" accept="text/fragment+html"></include-fragment> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="insights-tab" href="/JetBrains/kotlin/pulse" data-tab-item="i4insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /JetBrains/kotlin/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Insights","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> <span data-content="Insights">Insights</span> <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> </ul> <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-button" popovertarget="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-overlay" aria-controls="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-list" aria-haspopup="true" aria-labelledby="tooltip-80060dd8-9b1d-4c80-9fb6-6884bbf3fdd4" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual"> <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path> </svg> </button><tool-tip id="tooltip-80060dd8-9b1d-4c80-9fb6-6884bbf3fdd4" for="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip> <anchored-position id="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-overlay" anchor="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-button" id="action-menu-3705d51b-0a2e-4a4e-913c-d911fadc7a08-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-3f34244e-8cb6-4c5e-867b-104a897d9b2f" href="/JetBrains/kotlin" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Code </span> </a> </li> <li hidden="hidden" data-menu-item="i1pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-861b8b2c-2e2b-485e-bc1d-f3b1b94fca0f" href="/JetBrains/kotlin/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Pull requests </span> </a> </li> <li hidden="hidden" data-menu-item="i2actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-dd3f71fc-340e-462f-bdb5-58a28315650a" href="/JetBrains/kotlin/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Actions </span> </a> </li> <li hidden="hidden" data-menu-item="i3security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-821f7e15-368b-47fc-a7b4-dccc0c5947d6" href="/JetBrains/kotlin/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Security </span> </a> </li> <li hidden="hidden" data-menu-item="i4insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-a128e2ce-38fe-4c03-be50-52c2f875b723" href="/JetBrains/kotlin/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Insights </span> </a> </li> </ul> </div></action-list> </div> </div></anchored-position> </focus-group> </action-menu></div> </nav> </div> <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class=""> <div id="repo-content-pjax-container" class="repository-content " > <h1 class='sr-only'>Releases: JetBrains/kotlin</h1> <div class="clearfix container-xl px-3 px-md-4 px-lg-5 mt-4"> <div class="d-flex flex-justify-center"> <div class="d-flex flex-column flex-sm-row flex-wrap mb-3 pb-3 col-11 flex-justify-between border-bottom" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <nav aria-label="Releases and Tags" class="mb-2 flex-1"> <a class="js-selected-navigation-item selected subnav-item" aria-current="page" data-selected-links="repo_releases /JetBrains/kotlin/releases" href="/JetBrains/kotlin/releases">Releases</a> <a class="js-selected-navigation-item subnav-item" data-selected-links="repo_tags /JetBrains/kotlin/tags" href="/JetBrains/kotlin/tags">Tags</a> </nav> <div class="d-flex flex-column flex-md-row"> <div> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="position-relative ml-md-2" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-turbo="false" action="/JetBrains/kotlin/releases" accept-charset="UTF-8" method="get"> <input id="release-filter" type="search" name="q" class="form-control subnav-search-input width-full" value="" placeholder="Find a release" aria-label="Find a release" > <input type="hidden" name="expanded" value="true"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search subnav-search-icon"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </form> </div> </div> </div> </div> <div hidden id="release_page_title">Releases · JetBrains/kotlin</div> <div data-pjax data-hpc> <section aria-labelledby="hd-a5a44a5f"> <h2 class="sr-only" id="hd-a5a44a5f">Kotlin 2.1.0</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-11-27T14:17:27Z"> 27 Nov 14:17 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.1.0" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.1.0 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/5dd9cea66ee526f0251c9b1d2543229202622f6b/hovercard" href="/JetBrains/kotlin/commit/5dd9cea66ee526f0251c9b1d2543229202622f6b" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">5dd9cea</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-96f84e5e-af05-11ef-8b20-ee6974031b09"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-96f84e5e-af05-11ef-8b20-ee6974031b09"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMS4w" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.1.0" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.1.0" data-view-component="true" class="Link--primary Link">Kotlin 2.1.0</a></span> <span> <a href="/JetBrains/kotlin/releases/latest" data-view-component="true" class="Link v-align-text-bottom d-none d-md-inline-block"><span data-view-component="true" class="Label Label--success Label--large">Latest</span></a> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <a href="/JetBrains/kotlin/releases/latest" data-view-component="true" class="Link v-align-text-bottom"><span data-view-component="true" class="Label Label--success Label--large">Latest</span></a> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Analysis API</h3> <h4>New Features</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-68603" rel="nofollow"><code>KT-68603</code></a> KotlinDirectInheritorsProvider: add an option to ignore non-kotlin results</li> </ul> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70757" rel="nofollow"><code>KT-70757</code></a> Performance problem in KaFirVisibilityChecker for KaFirPsiJavaClassSymbol</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70437" rel="nofollow"><code>KT-70437</code></a> Class reference is not resolvable</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-57733" rel="nofollow"><code>KT-57733</code></a> Analysis API: Use optimized <code>ModuleWithDependenciesScope</code>s in combined symbol providers</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72389" rel="nofollow"><code>KT-72389</code></a> K2: False positive "Redundant 'protected' modifier" for protected property inside protected constructor from private or internal class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69190" rel="nofollow"><code>KT-69190</code></a> K2: False-positive "redundant private modifier"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-64984" rel="nofollow"><code>KT-64984</code></a> Analysis API: Support Wasm target</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70375" rel="nofollow"><code>KT-70375</code></a> K2: NPE at org.jetbrains.kotlin.analysis.api.fir.symbols.KaFirNamedClassSymbolBase.createPointer</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71259" rel="nofollow"><code>KT-71259</code></a> K2 evaluator: Invalid smart cast info collecting for Code Fragments</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69360" rel="nofollow"><code>KT-69360</code></a> Lack of implicit receiver for the last statement under lambda in scripts</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70890" rel="nofollow"><code>KT-70890</code></a> Analysis API: Experiment with weak references to LL FIR/analysis sessions in session caches</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70657" rel="nofollow"><code>KT-70657</code></a> Analysis API: Inner types from classes with generics are incorrectly represented by the compiled jars</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71055" rel="nofollow"><code>KT-71055</code></a> Suspend calls inside 'analyze()' break the block guarantees</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70815" rel="nofollow"><code>KT-70815</code></a> Analysis API: Implement stop-the-world session invalidation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69819" rel="nofollow"><code>KT-69819</code></a> K2 IDE: LHS type in callable references is unresolved when it has type arguments and is qualified</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68761" rel="nofollow"><code>KT-68761</code></a> Analysis API: Experiment with limited-size cache in <code>KaFirSessionProvider</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70384" rel="nofollow"><code>KT-70384</code></a> Analysis API Standalone: The same class in the same two renamed jars is unresolved</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71067" rel="nofollow"><code>KT-71067</code></a> Exceptions from references cancel Find Usages</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69535" rel="nofollow"><code>KT-69535</code></a> Redesign 'containingSymbol'</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71025" rel="nofollow"><code>KT-71025</code></a> K2 IDE: Scopes in "importingScopeContext" have reversed ordering and "indexInTower" values</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67483" rel="nofollow"><code>KT-67483</code></a> K2 IDE: Serializable plugin causes infinite resolve recursion when there is a star import from a class with annotation call</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69416" rel="nofollow"><code>KT-69416</code></a> K2 IDE / Completion: “No classifier found” on simple value creating</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70257" rel="nofollow"><code>KT-70257</code></a> CCE: class kotlin.UInt cannot be cast to class java.lang.Number</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70376" rel="nofollow"><code>KT-70376</code></a> K2 IDE / Kotlin Debugger: IAE “Only componentN functions should be cached this way, but got: toString” on evaluating toString() method for value class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70264" rel="nofollow"><code>KT-70264</code></a> AA: service registration via XML fails with AbstractMethodError in Lint CLI</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69950" rel="nofollow"><code>KT-69950</code></a> Analysis API: Introduce <code>isSubtypeOf(ClassId)</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68625" rel="nofollow"><code>KT-68625</code></a> K2: “<code>lazyResolveToPhase(STATUS)</code> cannot be called from a transformer with a phase STATUS.”</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67665" rel="nofollow"><code>KT-67665</code></a> K2: contract violation for value class with a constructor parameter with an implicit type</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67009" rel="nofollow"><code>KT-67009</code></a> Analysis API: Add abbreviated type tests for type aliases from source modules</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69977" rel="nofollow"><code>KT-69977</code></a> KaFirFunctionalType#getAbbreviation is always null</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68341" rel="nofollow"><code>KT-68341</code></a> Analysis API: Expanded function types from libraries don't have an abbreviated type</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68857" rel="nofollow"><code>KT-68857</code></a> Analysis API: Refactor annotations</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70386" rel="nofollow"><code>KT-70386</code></a> Do not filter out overloads from different libraries in dangling files</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65552" rel="nofollow"><code>KT-65552</code></a> K2: CANNOT_CHECK_FOR_ERASED in KtTypeCodeFragment</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65803" rel="nofollow"><code>KT-65803</code></a> K2: Analysis API: KtFirTypeProvider#getSubstitutedSuperTypes throws an exception in the case of "Wrong number of type arguments"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68896" rel="nofollow"><code>KT-68896</code></a> Support VirtualFile binary dependency inputs to Analysis API modules</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69395" rel="nofollow"><code>KT-69395</code></a> K2 IDE: incorrect overload selection from binary dependencies in a shared native source set</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68573" rel="nofollow"><code>KT-68573</code></a> ISE: "Unexpected constant value (kotlin/annotation/AnnotationTarget, CLASS)" at Kt1DescUtilsKt.toKtConstantValue()</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69576" rel="nofollow"><code>KT-69576</code></a> Analysis API: FIR implementation of "isImplicitReferenceToCompanion" returns false for companion references in implicit invoke operator calls</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69568" rel="nofollow"><code>KT-69568</code></a> Analysis API: FIR implementation of "isImplicitReferenceToCompanion" returns true for non-companion references in qualified calls</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69436" rel="nofollow"><code>KT-69436</code></a> Analysis API Platform: Encapsulate <code>LLFirDeclarationModificationService</code> as an engine service</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-63004" rel="nofollow"><code>KT-63004</code></a> K2: Analysis API: Design API for querying declarations generated by compiler plugins (similar to indices)</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69452" rel="nofollow"><code>KT-69452</code></a> AA FIR: wrong source PSI after compile-time evaluation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69598" rel="nofollow"><code>KT-69598</code></a> AA: definitely not-null type at receiver position should be wrapped in parenthesis</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60484" rel="nofollow"><code>KT-60484</code></a> Analysis API: add support for KtType pointers similar to KtSymbolPointer</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68884" rel="nofollow"><code>KT-68884</code></a> Analysis API: Rename/deprecate/remove declarations as part of Stabilization</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69453" rel="nofollow"><code>KT-69453</code></a> AA FIR: miss to handle expected type of lambda with explicit label</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69533" rel="nofollow"><code>KT-69533</code></a> Protect implementation parts of Analysis API with opt-in annotations</li> </ul> <h3>Analysis API. FIR</h3> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71566" rel="nofollow"><code>KT-71566</code></a> FirElementBuilder#getFirForNonKtFileElement should iterate a Psi file over and over</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71224" rel="nofollow"><code>KT-71224</code></a> Analysis API: <code>FirElementFinder.collectDesignationPath</code> relies on naive iteration through FIR files</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70327" rel="nofollow"><code>KT-70327</code></a> Analysis API: Batch inspection causes deadlock in <code>ValueWithPostCompute</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69070" rel="nofollow"><code>KT-69070</code></a> Analysis API: Querying declared member scope for Java symbols results in exception in some use cases</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68268" rel="nofollow"><code>KT-68268</code></a> LLSealedInheritorsProvider: reduce scope to kotlin files</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69671" rel="nofollow"><code>KT-69671</code></a> TYPES phase contract violation through JavaSymbolProvider</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70624" rel="nofollow"><code>KT-70624</code></a> Declaration symbols from code fragments are treated as not local</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70662" rel="nofollow"><code>KT-70662</code></a> NPE: FirLazyBodiesCalculatorKt.calculateLazyBodyForProperty</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70859" rel="nofollow"><code>KT-70859</code></a> Do not fail highlighting due to resolution problems</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70474" rel="nofollow"><code>KT-70474</code></a> FirLazyResolveContractViolationException from JavaSymbolProvider</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70323" rel="nofollow"><code>KT-70323</code></a> FirLazyResolveContractViolationException: <code>lazyResolveToPhase(TYPES)</code> cannot be called from a transformer with a phase TYPES</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71567" rel="nofollow"><code>KT-71567</code></a> LLFirCompilerRequiredAnnotationsTargetResolver should calculate annotation arguments on demand</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71584" rel="nofollow"><code>KT-71584</code></a> <code>getNonLocalContainingOrThisDeclaration</code> treats KtParameter from functional type as non-local</li> </ul> <h3>Analysis API. Light Classes</h3> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69998" rel="nofollow"><code>KT-69998</code></a> Drop redundant cache from ClassInnerStuffCache</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69833" rel="nofollow"><code>KT-69833</code></a> Support value classes</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71693" rel="nofollow"><code>KT-71693</code></a> Wrong name mangling for JvmField class property and companion property clash</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71469" rel="nofollow"><code>KT-71469</code></a> KtLightClassForDecompiledDeclaration: missed kotlinOrigin</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70710" rel="nofollow"><code>KT-70710</code></a> Provide light classes for KMP modules in Android Lint</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70548" rel="nofollow"><code>KT-70548</code></a> SLC: text of class object access expression is not the same as raw text</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70572" rel="nofollow"><code>KT-70572</code></a> SLC: missing <code>isInheritor</code> implementation for type parameter</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70491" rel="nofollow"><code>KT-70491</code></a> SLC: inconsistent source PSI of no-arg constructor for all default values</li> <li>[<code>KT-70458</code>](<a href="https://youtrack.jetbrains.co" rel="nofollow">https://youtrack.jetbrains.co</a>...</li> </ul></div> <a href="/JetBrains/kotlin/releases/tag/v2.1.0" data-view-component="true" class="Link">Read more</a> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details open="open" data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment class="js-truncated-assets-fragment" data-deferred-src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.1.0"> <div data-view-component="true" class="Box Box--condensed mt-3"> <ul data-view-component="true"> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-compiler-2.1.0.spdx.json" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-compiler-2.1.0.spdx.json</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">32.7 KB</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:23Z" class="no-wrap" prefix="">2024-11-27T13:55:23Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-compiler-2.1.0.zip" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-compiler-2.1.0.zip</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">82.4 MB</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:19Z" class="no-wrap" prefix="">2024-11-27T13:55:19Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-compiler-2.1.0.zip.sha256" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-compiler-2.1.0.zip.sha256</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">64 Bytes</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:22Z" class="no-wrap" prefix="">2024-11-27T13:55:22Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-linux-x86_64-2.1.0.spdx.json" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-linux-x86_64-2.1.0.spdx.json</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">426 Bytes</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:32Z" class="no-wrap" prefix="">2024-11-27T13:55:32Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-linux-x86_64-2.1.0.tar.gz" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-linux-x86_64-2.1.0.tar.gz</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">269 MB</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:24Z" class="no-wrap" prefix="">2024-11-27T13:55:24Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-linux-x86_64-2.1.0.tar.gz.sha256" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-linux-x86_64-2.1.0.tar.gz.sha256</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">64 Bytes</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:32Z" class="no-wrap" prefix="">2024-11-27T13:55:32Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-macos-aarch64-2.1.0.spdx.json" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-macos-aarch64-2.1.0.spdx.json</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">426 Bytes</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:43Z" class="no-wrap" prefix="">2024-11-27T13:55:43Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-macos-aarch64-2.1.0.tar.gz" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-macos-aarch64-2.1.0.tar.gz</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">312 MB</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:33Z" class="no-wrap" prefix="">2024-11-27T13:55:33Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-macos-aarch64-2.1.0.tar.gz.sha256" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-macos-aarch64-2.1.0.tar.gz.sha256</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">64 Bytes</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:42Z" class="no-wrap" prefix="">2024-11-27T13:55:42Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package color-fg-muted"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> <a href="/JetBrains/kotlin/releases/download/v2.1.0/kotlin-native-prebuilt-macos-x86_64-2.1.0.spdx.json" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">kotlin-native-prebuilt-macos-x86_64-2.1.0.spdx.json</span> <span data-view-component="true" class="Truncate-text"></span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-sm-left flex-auto ml-md-3">426 Bytes</span> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-27T13:55:54Z" class="no-wrap" prefix="">2024-11-27T13:55:54Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-zip color-fg-muted"> <path d="M3.5 1.75v11.5c0 .09.048.173.126.217a.75.75 0 0 1-.752 1.298A1.748 1.748 0 0 1 2 13.25V1.75C2 .784 2.784 0 3.75 0h5.586c.464 0 .909.185 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 12.25 15h-.5a.75.75 0 0 1 0-1.5h.5a.25.25 0 0 0 .25-.25V4.664a.25.25 0 0 0-.073-.177L9.513 1.573a.25.25 0 0 0-.177-.073H7.25a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5h-3a.25.25 0 0 0-.25.25Zm3.75 8.75h.5c.966 0 1.75.784 1.75 1.75v3a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1-.75-.75v-3c0-.966.784-1.75 1.75-1.75ZM6 5.25a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 6 5.25Zm.75 2.25h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM8 6.75A.75.75 0 0 1 8.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 8 6.75ZM8.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM8 9.75A.75.75 0 0 1 8.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 8 9.75Zm-1 2.5v2.25h1v-2.25a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25Z"></path> </svg> <a href="/JetBrains/kotlin/archive/refs/tags/v2.1.0.zip" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">Source code</span> <span data-view-component="true" class="Truncate-text">(zip)</span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-25T18:11:11Z" class="no-wrap" prefix="">2024-11-25T18:11:11Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true" class="d-flex flex-justify-start col-12 col-lg-9"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-zip color-fg-muted"> <path d="M3.5 1.75v11.5c0 .09.048.173.126.217a.75.75 0 0 1-.752 1.298A1.748 1.748 0 0 1 2 13.25V1.75C2 .784 2.784 0 3.75 0h5.586c.464 0 .909.185 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 12.25 15h-.5a.75.75 0 0 1 0-1.5h.5a.25.25 0 0 0 .25-.25V4.664a.25.25 0 0 0-.073-.177L9.513 1.573a.25.25 0 0 0-.177-.073H7.25a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5h-3a.25.25 0 0 0-.25.25Zm3.75 8.75h.5c.966 0 1.75.784 1.75 1.75v3a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1-.75-.75v-3c0-.966.784-1.75 1.75-1.75ZM6 5.25a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 6 5.25Zm.75 2.25h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM8 6.75A.75.75 0 0 1 8.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 8 6.75ZM8.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM8 9.75A.75.75 0 0 1 8.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 8 9.75Zm-1 2.5v2.25h1v-2.25a.25.25 0 0 0-.25-.25h-.5a.25.25 0 0 0-.25.25Z"></path> </svg> <a href="/JetBrains/kotlin/archive/refs/tags/v2.1.0.tar.gz" rel="nofollow" data-turbo="false" data-view-component="true" class="Truncate"> <span data-view-component="true" class="Truncate-text text-bold">Source code</span> <span data-view-component="true" class="Truncate-text">(tar.gz)</span> </a></div> <div data-view-component="true" class="d-flex flex-auto flex-justify-end col-md-4 ml-3 ml-md-0 mt-1 mt-md-0 pl-1 pl-md-0"> <span style="white-space: nowrap;" data-view-component="true" class="color-fg-muted text-right flex-shrink-0 flex-grow-0 ml-3"><relative-time datetime="2024-11-25T18:11:11Z" class="no-wrap" prefix="">2024-11-25T18:11:11Z</relative-time></span> </div></li> <li data-view-component="true" class="Box-row d-flex flex-column flex-md-row"> <div data-view-component="true"> <button type="button" data-view-component="true" class="js-release-asset-untruncate-btn btn-link"> Show all 18 assets </button> <span hidden="hidden" data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="js-truncate-assets-spinner anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div></li> </ul> </div> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="Cv5o_Lrysm5xwuxCjUU4XSE0gC0BEiheTAc2hMJ8GR4vZfs2hNjD8hldqKUhmF2tvrG_dqVccA7bADp_wFx8Qw" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4LMehQ"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-a04c85" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (40): KotlinBuild, 06:11PM on November 25" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">40</span> </button> <tool-tip id="tooltip-9750a2ea-2658-4f8f-8dd3-a6a170c91fb7" for="reactions--reaction_button_component-a04c85" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">NicosNicolaou16, Elelan, yunusemreaksu, clemstoquart, thiagogebrimm, Neccar43, gpopides, Quillraven, Rawa, salimisler28, and 30 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-35a0d2" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (5): KotlinBuild, 06:11PM on November 25" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">5</span> </button> <tool-tip id="tooltip-ed9c7602-cbf5-4de7-abfe-11cd54f43007" for="reactions--reaction_button_component-35a0d2" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, michaelbel, nozoo1025, philip-segerfast, and piyushchauhan2011 reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-b7999c" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (56): KotlinBuild, 06:11PM on November 25" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">56</span> </button> <tool-tip id="tooltip-a418253b-e538-4637-92aa-3354d146fdbb" for="reactions--reaction_button_component-b7999c" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Enaium, halukerenozlu, lujun2, manriif, senk0n, dhng22, f33lnothin9, fayzfi, matejsemancik, Luckenty, and 46 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-4f80a7" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (25): KotlinBuild, 06:11PM on November 25" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">25</span> </button> <tool-tip id="tooltip-6d043cd8-7e03-4a14-8716-6399fa594780" for="reactions--reaction_button_component-4f80a7" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">senk0n, xiaobailong24, Sterta, SteinerOk, dayanruben, EdricChan03, Elelan, Rafael2616, AkesiSeli, Rawa, and 15 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-882fb9" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (29): KotlinBuild, 06:11PM on November 25" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">29</span> </button> <tool-tip id="tooltip-45004394-2e97-4272-b6cf-2c7a150654fe" for="reactions--reaction_button_component-882fb9" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">senk0n, Luckenty, xiaobailong24, Sterta, hamza-bousalih, dayanruben, EdricChan03, Elelan, alibagherifam, Javernaut, and 19 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-7a72e9" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (13): KotlinBuild, 06:11PM on November 25" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">13</span> </button> <tool-tip id="tooltip-b80cb55a-6f04-4640-8399-3107dfe4c739" for="reactions--reaction_button_component-7a72e9" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">senk0n, xiaobailong24, hamza-bousalih, dayanruben, EdricChan03, Rawa, salimisler28, gmitch215, YektaDev, michaelbel, and 3 more reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="NicosNicolaou16, Elelan, yunusemreaksu, clemstoquart, thiagogebrimm, Neccar43, gpopides, Quillraven, Rawa, salimisler28, and 30 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>40 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, michaelbel, nozoo1025, philip-segerfast, and piyushchauhan2011 reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>5 reactions</span> </li> <li class="dropdown-item" aria-label="Enaium, halukerenozlu, lujun2, manriif, senk0n, dhng22, f33lnothin9, fayzfi, matejsemancik, Luckenty, and 46 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>56 reactions</span> </li> <li class="dropdown-item" aria-label="senk0n, xiaobailong24, Sterta, SteinerOk, dayanruben, EdricChan03, Elelan, Rafael2616, AkesiSeli, Rawa, and 15 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>25 reactions</span> </li> <li class="dropdown-item" aria-label="senk0n, Luckenty, xiaobailong24, Sterta, hamza-bousalih, dayanruben, EdricChan03, Elelan, alibagherifam, Javernaut, and 19 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>29 reactions</span> </li> <li class="dropdown-item" aria-label="senk0n, xiaobailong24, hamza-bousalih, dayanruben, EdricChan03, Rawa, salimisler28, gmitch215, YektaDev, michaelbel, and 3 more reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>13 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">89 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-1cde2776"> <h2 class="sr-only" id="hd-1cde2776">Kotlin 2.1.0-RC2</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-11-18T14:12:50Z"> 18 Nov 14:12 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.1.0-RC2" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.1.0-RC2 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/f959bf2dd9a5f02b66fb339e8e659bc2590a9aa7/hovercard" href="/JetBrains/kotlin/commit/f959bf2dd9a5f02b66fb339e8e659bc2590a9aa7" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">f959bf2</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-96fd6f24-af05-11ef-8e4f-fc98284f6158"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-96fd6f24-af05-11ef-8e4f-fc98284f6158"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMS4wLVJDMg==" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.1.0-RC2" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.1.0-RC2" data-view-component="true" class="Link--primary Link">Kotlin 2.1.0-RC2</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Compiler</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72345" rel="nofollow"><code>KT-72345</code></a> K2: Method 'get' without <code>@Override</code> annotation not called</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-73065" rel="nofollow"><code>KT-73065</code></a> CCE with context receivers</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72996" rel="nofollow"><code>KT-72996</code></a> false-positive unresolved reference error on an overloaded callable reference in a lambda return position on the left-hand size of an elvis operator</li> </ul> <h3>Compose compiler</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/CMP-6926" rel="nofollow"><code>CMP-6926</code></a> iOS compilation failure: Unresolved reference 'copy'</li> </ul> <h3>IR. Inlining</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72884" rel="nofollow"><code>KT-72884</code></a> Internal error in body lowering: IllegalStateException: Can't inline given reference, it should've been lowered</li> </ul> <h3>JavaScript</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70533" rel="nofollow"><code>KT-70533</code></a> KJS: changed string concatenation behavior in 2.0</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-14013" rel="nofollow"><code>KT-14013</code></a> JS toString produces different result for nullable/non-nullable ref to the same array</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-43567" rel="nofollow"><code>KT-43567</code></a> KJS: toString() method and string interpolation of variable produce different code</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72732" rel="nofollow"><code>KT-72732</code></a> KJS / ES6: "SyntaxError: 'super' keyword unexpected here" with enabled <code>-Xir-generate-inline-anonymous-functions</code> and disabled arrow functions</li> </ul> <h3>Klibs</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72965" rel="nofollow"><code>KT-72965</code></a> Ignore subclassOptInRequired constructor warning</li> </ul> <h3>Tools. Compiler Plugins</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72804" rel="nofollow"><code>KT-72804</code></a> Regression in Kotlin 2.1.0: compilation fails when building iOS</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72824" rel="nofollow"><code>KT-72824</code></a> Kotlin power-assert plugin StringIndexOutOfBoundsException</li> </ul> <h3>Tools. Gradle</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-47897" rel="nofollow"><code>KT-47897</code></a> Official Kotlin Gradle plugin api</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-58858" rel="nofollow"><code>KT-58858</code></a> Add KDoc documentation for Kotlin Gradle plugin API</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-73076" rel="nofollow"><code>KT-73076</code></a> Kotlin Gradle Plugin API Reference: adjust settings</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70543" rel="nofollow"><code>KT-70543</code></a> Gradle: create migration guide for those who are using Kotlin compiler classes indirectly available in buildscripts</li> </ul></div> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.1.0-RC2" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="SJ3GIu1B8czQHLEUczvg82XzSdQVes4MN6UF171GeKxtBlXo02uAULiD9fPf5oUD-nZ2j7E0llygogksv2Yd8Q" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4LFN_E"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-950994" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (39): KotlinBuild, 03:19PM on November 14" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">39</span> </button> <tool-tip id="tooltip-29200bad-fe1b-4803-b318-1723719531fd" for="reactions--reaction_button_component-950994" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">hamza-bousalih, jisungbin, bjarneheden, lupuuss, brewin, jsm174, SIMULATAN, IRus, sureshg, Mojeed06, and 29 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-b6480f" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (5): KotlinBuild, 03:19PM on November 14" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">5</span> </button> <tool-tip id="tooltip-8904ea61-4241-4b71-bf68-b55359456f3f" for="reactions--reaction_button_component-b6480f" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Elelan, youndon, chris-hatton, salimisler28, and tlarcher-gpsw reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-5f102b" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (11): KotlinBuild, 03:19PM on November 14" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">11</span> </button> <tool-tip id="tooltip-8f8ae24a-bec1-4eeb-a4e5-acf73b022878" for="reactions--reaction_button_component-5f102b" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Elelan, youndon, chris-hatton, salimisler28, tlarcher-gpsw, Junzz0, junerver, ParaskP7, ice1000, LandryNorris, and bastionkid reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-d90436" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (15): KotlinBuild, 03:19PM on November 14" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">15</span> </button> <tool-tip id="tooltip-c952b19a-1154-49c2-be41-b407f053fb0b" for="reactions--reaction_button_component-d90436" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Rafael2616, swistak7171, lupuuss, IRus, Elelan, chris-hatton, salimisler28, tlarcher-gpsw, ParaskP7, AkesiSeli, and 5 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-70281e" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (11): KotlinBuild, 03:19PM on November 14" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">11</span> </button> <tool-tip id="tooltip-976c98de-259a-47f6-b750-c51bf6f87315" for="reactions--reaction_button_component-70281e" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sureshg, mtrewartha, Elelan, vinceglb, chris-hatton, salimisler28, tlarcher-gpsw, ShiinaKin, ParaskP7, AkesiSeli, and LandryNorris reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-485618" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (6): KotlinBuild, 03:19PM on November 14" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">6</span> </button> <tool-tip id="tooltip-c2f971e3-a9af-4f10-baae-e94ed6f71d89" for="reactions--reaction_button_component-485618" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Elelan, chris-hatton, salimisler28, tlarcher-gpsw, Smekalisty, and canonall reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="hamza-bousalih, jisungbin, bjarneheden, lupuuss, brewin, jsm174, SIMULATAN, IRus, sureshg, Mojeed06, and 29 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>39 reactions</span> </li> <li class="dropdown-item" aria-label="Elelan, youndon, chris-hatton, salimisler28, and tlarcher-gpsw reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>5 reactions</span> </li> <li class="dropdown-item" aria-label="Elelan, youndon, chris-hatton, salimisler28, tlarcher-gpsw, Junzz0, junerver, ParaskP7, ice1000, LandryNorris, and bastionkid reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>11 reactions</span> </li> <li class="dropdown-item" aria-label="Rafael2616, swistak7171, lupuuss, IRus, Elelan, chris-hatton, salimisler28, tlarcher-gpsw, ParaskP7, AkesiSeli, and 5 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>15 reactions</span> </li> <li class="dropdown-item" aria-label="sureshg, mtrewartha, Elelan, vinceglb, chris-hatton, salimisler28, tlarcher-gpsw, ShiinaKin, ParaskP7, AkesiSeli, and LandryNorris reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>11 reactions</span> </li> <li class="dropdown-item" aria-label="Elelan, chris-hatton, salimisler28, tlarcher-gpsw, Smekalisty, and canonall reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>6 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">50 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-a4c58d76"> <h2 class="sr-only" id="hd-a4c58d76">Kotlin 2.1.0-RC</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-11-04T14:34:13Z"> 04 Nov 14:34 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.1.0-RC" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.1.0-RC </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/c2ccd14ba64f97aad7ef73de9ff48ea388b56f82/hovercard" href="/JetBrains/kotlin/commit/c2ccd14ba64f97aad7ef73de9ff48ea388b56f82" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">c2ccd14</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-970048de-af05-11ef-8156-d74ee00b3325"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-970048de-af05-11ef-8156-d74ee00b3325"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMS4wLVJD" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.1.0-RC" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.1.0-RC" data-view-component="true" class="Link--primary Link">Kotlin 2.1.0-RC</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Backend. Wasm</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72297" rel="nofollow"><code>KT-72297</code></a> [Wasm] Unused associated object class lead to compiler fail</li> </ul> <h3>Compiler</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72281" rel="nofollow"><code>KT-72281</code></a> K/N: "Failed to wait for cache to be built"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72238" rel="nofollow"><code>KT-72238</code></a> Argument type mismatch in builder inside extension function after ?:</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71751" rel="nofollow"><code>KT-71751</code></a> K2: Skipping code in last statement of lambda</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72552" rel="nofollow"><code>KT-72552</code></a> AutoboxingTransformer fails on during linkage on nested lambdas with cinteroped types</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71649" rel="nofollow"><code>KT-71649</code></a> K2: Put operator on mutableMap<T?, V>() causes crashes on null key</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71508" rel="nofollow"><code>KT-71508</code></a> JAVA_CLASS_INHERITS_KT_PRIVATE_CLASS isn't reported when java class is inherited from an effectively private class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72178" rel="nofollow"><code>KT-72178</code></a> K2: "Unexpected FirPlaceholderProjectionImpl" exception when using "_" as key type in EnumMap</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72302" rel="nofollow"><code>KT-72302</code></a> K2: no error on type operator in annotation parameter default value</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72173" rel="nofollow"><code>KT-72173</code></a> K2: simple object names from root package are resolved without imports in non-root packages when used as values</li> </ul> <h3>Compose compiler</h3> <ul> <li><a href="https://issuetracker.google.com/issues/376058538" rel="nofollow"><code>b/376058538</code></a> Fix stack overflow when inferring stability of indirect generic loop</li> <li><a href="https://issuetracker.google.com/issues/339322843" rel="nofollow"><code>b/339322843</code></a> Transform <code>@Composable</code> property delegate references</li> </ul> <h3>IR. Inlining</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72521" rel="nofollow"><code>KT-72521</code></a> Kotlin/Native: java.lang.AssertionError: kfun:androidx.compose.runtime#access$<get-androidx_compose_runtime_ProvidedValue$stable>$p$tComposerKt(){}kotlin.Int</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72623" rel="nofollow"><code>KT-72623</code></a> Don't generate synthetic accessors in files other than the one being lowered</li> </ul> <h3>IR. Interpreter</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72356" rel="nofollow"><code>KT-72356</code></a> K2 Native: IllegalStateException when annotation has the same source range as a constant in another file</li> </ul> <h3>Native. Runtime. Memory</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71401" rel="nofollow"><code>KT-71401</code></a> K/N: CMS barrier can be executed on an unregisterred thread</li> </ul> <h3>Tools. CLI</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72311" rel="nofollow"><code>KT-72311</code></a> KotlinCliJavaFileManagerImpl caches empty result and broke repeated analyses</li> </ul> <h3>Tools. Daemon</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72530" rel="nofollow"><code>KT-72530</code></a> The daemon has terminated unexpectedly on startup attempt <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3437303" data-permission-text="Title is private" data-url="https://github.com/JetBrains/kotlin/issues/1" data-hovercard-type="pull_request" data-hovercard-url="/JetBrains/kotlin/pull/1/hovercard" href="https://github.com/JetBrains/kotlin/pull/1">#1</a> with error code: Unknown</li> </ul> <h3>Tools. Gradle</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72467" rel="nofollow"><code>KT-72467</code></a> kotlin.sourceSets extension not added for KotlinBaseApiPlugin.createKotlinAndroidExtension()</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72495" rel="nofollow"><code>KT-72495</code></a> Warn about kotlin-compiler-embeddable loaded along KGP</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72387" rel="nofollow"><code>KT-72387</code></a> KGP 2.1.0-RC-227 changes cause KSP to crash calling produceUnpackedKlib</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72303" rel="nofollow"><code>KT-72303</code></a> KGP 2.1.0-Beta2 broke compatibility with KSP</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72651" rel="nofollow"><code>KT-72651</code></a> Unable to use <code>target</code> for KotlinBaseApiPlugin.createKotlin(Jvm/Android)Extension()</li> </ul> <h3>Tools. Gradle. Multiplatform</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72454" rel="nofollow"><code>KT-72454</code></a> Revert changes made in KT-69899 i.e. make kotlin.android.buildTypeAttribute.keep = false by default again</li> </ul> <h3>Tools. Gradle. Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72366" rel="nofollow"><code>KT-72366</code></a> KGP 2.1.0-Beta2 doesn't download <code>kotlin-native-prebuilt</code> when running Dokka</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71051" rel="nofollow"><code>KT-71051</code></a> K/N dependencies are re-downloaded multiple times on Windows</li> </ul> <h3>Tools. JPS</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-68565" rel="nofollow"><code>KT-68565</code></a> K2: IllegalStateException: Source classes should be created separately before referencing</li> </ul> <h3>Tools. Kapt</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71776" rel="nofollow"><code>KT-71776</code></a> K2 Kapt in 2.1.0-Beta1 fails with <code>e: java.lang.IllegalStateException: FIR symbol "class org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol" is not supported in constant evaluation</code></li> </ul></div> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.1.0-RC" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="dLxfSO14ocgjnQcJBWhKE97592EYw7o-zNA69pIT5SFRJ8yC01LQVEsCQ-6ptS_jQXzIOryN4m5b1zYNkDOAfA" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4K7GyS"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-079c07" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (38): KotlinBuild, 03:18PM on October 31" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">38</span> </button> <tool-tip id="tooltip-ad787fb2-e832-4003-a4f3-b1df88023b49" for="reactions--reaction_button_component-079c07" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">NicosNicolaou16, Rafael2616, bsh-generator, hamza-bousalih, Javernaut, xiaobailong24, pablichjenkov, tolik518, Moriafly, yunusemreaksu, and 28 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-e589a7" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (9): KotlinBuild, 03:18PM on October 31" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">9</span> </button> <tool-tip id="tooltip-88c3cd8a-237f-46ab-9823-7c963dd0cc7d" for="reactions--reaction_button_component-e589a7" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">salimisler28, sphrak, Rawa, chris-hatton, jisungbin, Denisskas, fenginsc, tlarcher-gpsw, and RTAkland reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-c47ea4" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (25): KotlinBuild, 03:18PM on October 31" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">25</span> </button> <tool-tip id="tooltip-bc96bcd6-81bd-4355-83f8-ca4e0a4be490" for="reactions--reaction_button_component-c47ea4" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">seljabali, Rafael2616, swistak7171, HaHaWTH, xiaobailong24, AkesiSeli, mtovt, ivanvemat, ingokegel, salimisler28, and 15 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-a28acc" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (15): KotlinBuild, 03:18PM on October 31" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">15</span> </button> <tool-tip id="tooltip-7a74709c-5575-4da0-b109-c730361e4ee1" for="reactions--reaction_button_component-a28acc" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">salimisler28, StijnDRZP, ArdeshirV, sphrak, Rawa, chris-hatton, jisungbin, ParaskP7, Denisskas, JacobCube, and 5 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-892a53" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (15): KotlinBuild, 03:18PM on October 31" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">15</span> </button> <tool-tip id="tooltip-2da017c0-5589-43eb-892b-7ed3b08c4c5c" for="reactions--reaction_button_component-892a53" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">AkesiSeli, brewin, salimisler28, sphrak, Rawa, chris-hatton, jisungbin, ParaskP7, Denisskas, tlarcher-gpsw, and 5 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-88e15a" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (7): KotlinBuild, 03:18PM on October 31" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">7</span> </button> <tool-tip id="tooltip-54681be1-cae1-4fa4-82b5-801945925bd1" for="reactions--reaction_button_component-88e15a" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">salimisler28, Rawa, chris-hatton, Denisskas, tlarcher-gpsw, RTAkland, and Smekalisty reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="NicosNicolaou16, Rafael2616, bsh-generator, hamza-bousalih, Javernaut, xiaobailong24, pablichjenkov, tolik518, Moriafly, yunusemreaksu, and 28 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>38 reactions</span> </li> <li class="dropdown-item" aria-label="salimisler28, sphrak, Rawa, chris-hatton, jisungbin, Denisskas, fenginsc, tlarcher-gpsw, and RTAkland reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>9 reactions</span> </li> <li class="dropdown-item" aria-label="seljabali, Rafael2616, swistak7171, HaHaWTH, xiaobailong24, AkesiSeli, mtovt, ivanvemat, ingokegel, salimisler28, and 15 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>25 reactions</span> </li> <li class="dropdown-item" aria-label="salimisler28, StijnDRZP, ArdeshirV, sphrak, Rawa, chris-hatton, jisungbin, ParaskP7, Denisskas, JacobCube, and 5 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>15 reactions</span> </li> <li class="dropdown-item" aria-label="AkesiSeli, brewin, salimisler28, sphrak, Rawa, chris-hatton, jisungbin, ParaskP7, Denisskas, tlarcher-gpsw, and 5 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>15 reactions</span> </li> <li class="dropdown-item" aria-label="salimisler28, Rawa, chris-hatton, Denisskas, tlarcher-gpsw, RTAkland, and Smekalisty reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>7 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">56 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-4d87005d"> <h2 class="sr-only" id="hd-4d87005d">Kotlin 2.1.0-Beta2</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-10-14T12:52:13Z"> 14 Oct 12:52 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.1.0-Beta2" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.1.0-Beta2 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/11769d66c2eb3c70db6520822e2dffb2571223e8/hovercard" href="/JetBrains/kotlin/commit/11769d66c2eb3c70db6520822e2dffb2571223e8" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">11769d6</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-970448da-af05-11ef-9521-77e20ecb0303"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-970448da-af05-11ef-9521-77e20ecb0303"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMS4wLUJldGEy" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.1.0-Beta2" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.1.0-Beta2" data-view-component="true" class="Link--primary Link">Kotlin 2.1.0-Beta2</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Analysis API. Caches and Invalidation</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71700" rel="nofollow"><code>KT-71700</code></a> Cache result of resolveToCall</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71520" rel="nofollow"><code>KT-71520</code></a> Analysis API: <code>LLFirNativeForwardDeclarationsSymbolProvider</code> spends a lot of time in indices</li> </ul> <h3>Analysis API. Lazy Resolution</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71567" rel="nofollow"><code>KT-71567</code></a> LLFirCompilerRequiredAnnotationsTargetResolver should calculate annotation arguments on demand</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71584" rel="nofollow"><code>KT-71584</code></a> <code>getNonLocalContainingOrThisDeclaration</code> treats KtParameter from functional type as non-local</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71566" rel="nofollow"><code>KT-71566</code></a> FirElementBuilder#getFirForNonKtFileElement should iterate a Psi file over and over</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71224" rel="nofollow"><code>KT-71224</code></a> Analysis API: <code>FirElementFinder.collectDesignationPath</code> relies on naive iteration through FIR files</li> </ul> <h3>Analysis API. Light Classes</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71693" rel="nofollow"><code>KT-71693</code></a> Wrong name mangling for JvmField class property and companion property clash</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71469" rel="nofollow"><code>KT-71469</code></a> KtLightClassForDecompiledDeclaration: missed kotlinOrigin</li> </ul> <h3>Analysis API. Stubs and Decompilation</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71565" rel="nofollow"><code>KT-71565</code></a> KtClassOrObject should use isLocal from greenStub</li> </ul> <h3>Analysis API. Surface</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71731" rel="nofollow"><code>KT-71731</code></a> directlyOverridenSymbols/allOverridenSymbols works incorrectly for intersection overrides</li> </ul> <h3>Analysis. API</h3> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70165" rel="nofollow"><code>KT-70165</code></a> Introduce PSI-based <code>KaSymbol</code>s for K2</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-64984" rel="nofollow"><code>KT-64984</code></a> Analysis API: Support Wasm target</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70375" rel="nofollow"><code>KT-70375</code></a> K2: NPE at org.jetbrains.kotlin.analysis.api.fir.symbols.KaFirNamedClassSymbolBase.createPointer</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-57733" rel="nofollow"><code>KT-57733</code></a> Analysis API: Use optimized <code>ModuleWithDependenciesScope</code>s in combined symbol providers</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70437" rel="nofollow"><code>KT-70437</code></a> Class reference is not resolvable</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70327" rel="nofollow"><code>KT-70327</code></a> Analysis API: Batch inspection causes deadlock in <code>ValueWithPostCompute</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71259" rel="nofollow"><code>KT-71259</code></a> K2 evaluator: Invalid smart cast info collecting for Code Fragments</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65110" rel="nofollow"><code>KT-65110</code></a> Analysis API: In Standalone mode the order of symbols is unstable</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71468" rel="nofollow"><code>KT-71468</code></a> Drop redundant logic from LLFirJavaFacadeForBinaries</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70890" rel="nofollow"><code>KT-70890</code></a> Analysis API: Experiment with weak references to LL FIR/analysis sessions in session caches</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70474" rel="nofollow"><code>KT-70474</code></a> FirLazyResolveContractViolationException from JavaSymbolProvider</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70657" rel="nofollow"><code>KT-70657</code></a> Analysis API: Inner types from classes with generics are incorrectly represented by the compiled jars</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71055" rel="nofollow"><code>KT-71055</code></a> Suspend calls inside 'analyze()' break the block guarantees</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70815" rel="nofollow"><code>KT-70815</code></a> Analysis API: Implement stop-the-world session invalidation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69819" rel="nofollow"><code>KT-69819</code></a> K2 IDE: LHS type in callable references is unresolved when it has type arguments and is qualified</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68761" rel="nofollow"><code>KT-68761</code></a> Analysis API: Experiment with limited-size cache in <code>KaFirSessionProvider</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70384" rel="nofollow"><code>KT-70384</code></a> Analysis API Standalone: The same class in the same two renamed jars is unresolved</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71067" rel="nofollow"><code>KT-71067</code></a> Exceptions from references cancel Find Usages</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69190" rel="nofollow"><code>KT-69190</code></a> K2: False-positive "redundant private modifier"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-63390" rel="nofollow"><code>KT-63390</code></a> K2: Analysis API: add annotations to KtClassInitializerSymbol</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71025" rel="nofollow"><code>KT-71025</code></a> K2 IDE: Scopes in "importingScopeContext" have reversed ordering and "indexInTower" values</li> </ul> <h3>Apple Ecosystem</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69093" rel="nofollow"><code>KT-69093</code></a> Xcode 16 support in Kotlin</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66894" rel="nofollow"><code>KT-66894</code></a> XCFramework task fails when name passed to xcframework DSL is different from framework's name</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65675" rel="nofollow"><code>KT-65675</code></a> XCFrameworkTask produces an xcframework with mismatched casing in embedded frameworks</li> </ul> <h3>Backend. Native. Debug</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71374" rel="nofollow"><code>KT-71374</code></a> lldb: step out breaks breaking in Xcode 16</li> </ul> <h3>Backend. Wasm</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-72156" rel="nofollow"><code>KT-72156</code></a> custom-formatters.js exists in JAR after publishToMavenLocal but not in the published artifact in Maven public</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70331" rel="nofollow"><code>KT-70331</code></a> Support incremental compilation for the Wasm backend</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71686" rel="nofollow"><code>KT-71686</code></a> K/Wasm: Add functions to convert between Kotlin and JS array types</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71473" rel="nofollow"><code>KT-71473</code></a> K/Wasm: Use <code>--closed-world</code> and related options for Binaryen</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71800" rel="nofollow"><code>KT-71800</code></a> Wasm compiler: Fix member generation for data classes with an array-type property</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71580" rel="nofollow"><code>KT-71580</code></a> String::toFloat on wasm behaves differently compared to other targets</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71523" rel="nofollow"><code>KT-71523</code></a> K/Wasm: cleanup after fix for KT-71474</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71475" rel="nofollow"><code>KT-71475</code></a> K/Wasm: KClass::qualifiedName returns incorrect result for nested or companion objects</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71474" rel="nofollow"><code>KT-71474</code></a> K/Wasm: KProperty*Impl equals work incorrectly for clabbale reference created in different files or modules</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71294" rel="nofollow"><code>KT-71294</code></a> Wasm Artifacts/Resource are being loaded relatively instead of absolutely</li> </ul> <h3>Compiler</h3> <h4>New Features</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71094" rel="nofollow"><code>KT-71094</code></a> Kotlin/Native incremental compilation: fail compilation if cache build failed</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70679" rel="nofollow"><code>KT-70679</code></a> Kotlin/Native: fill WritableTypeInfo from Swift Export type mapping</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-54227" rel="nofollow"><code>KT-54227</code></a> Cannot use nullable Nothing as reified type parameter</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71430" rel="nofollow"><code>KT-71430</code></a> Kotlin-to-Java direct actualization implementation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68163" rel="nofollow"><code>KT-68163</code></a> Expose supplementary compiler warnings via CLI</li> </ul> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71159" rel="nofollow"><code>KT-71159</code></a> [K2] OOM on large enum classes with fields</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71480" rel="nofollow"><code>KT-71480</code></a> JAVA_CLASS_INHERITS_KT_PRIVATE_CLASS isn't reported while java object isn't created</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71508" rel="nofollow"><code>KT-71508</code></a> JAVA_CLASS_INHERITS_KT_PRIVATE_CLASS isn't reported when java class is inherited from an effectively private class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71260" rel="nofollow"><code>KT-71260</code></a> K2: Internal compiler error in IrFakeOverrideSymbolBase.getOwner when there is no actual for expect</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-58820" rel="nofollow"><code>KT-58820</code></a> OPT_IN_USAGE_ERROR's message text does not account for SubclassOptInRequired</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71034" rel="nofollow"><code>KT-71034</code></a> Failing compiler/testData/codegen/box/inlineClasses/kt70461.kt</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71016" rel="nofollow"><code>KT-71016</code></a> K/Wasm: Failing compiler/testData/codegen/box/inlineClasses/kt70461.kt</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60521" rel="nofollow"><code>KT-60521</code></a> Drop language versions 1.4 and 1.5</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-72154" rel="nofollow"><code>KT-72154</code></a> Dokka fails with <code>not array: KClass<out Annotation></code> on Kotlin 2.1.20-dev with <code>@SubclassOptInRequired</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70562" rel="nofollow"><code>KT-70562</code></a> <code>@SubclassOptInRequired</code> cannot accept multiple experimental marker</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71708" rel="nofollow"><code>KT-71708</code></a> False negative UNSUPPORTED for collection literals as trailing return value</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-52469" rel="nofollow"><code>KT-52469</code></a> Deprecate reified type parameter instantiating into intersection types</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71563" rel="nofollow"><code>KT-71563</code></a> 'llegalStateException: Source classes should be created separately before referencing' when actualized through typealias and java direct actualization</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71756" rel="nofollow"><code>KT-71756</code></a> K2 evaluator: broken resolve of private members during debug of Kotlin project itself</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71550" rel="nofollow"><code>KT-71550</code></a> JVM IR: NPE on identity equals of boolean true with null</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71490" rel="nofollow"><code>KT-71490</code></a> K2: missing REDUNDANT_ELSE_IN_WHEN</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-64403" rel="nofollow"><code>KT-64403</code></a> Implement BlackBoxCodegenTestSpecGenerated for K2</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71551" rel="nofollow"><code>KT-71551</code></a> JVM IR K1: NPE on generating a function imported from an object from another module</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71210" rel="nofollow"><code>KT-71210</code></a> K2: false negative FUNCTION_CALL_EXPECTED / NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE with companion objects</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69549" rel="nofollow"><code>KT-69549</code></a> Try to move callable reference transformation earlier in pipeline</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71228" rel="nofollow"><code>KT-71228</code></a> K2: "IllegalAr...</li> </ul></div> <a href="/JetBrains/kotlin/releases/tag/v2.1.0-Beta2" data-view-component="true" class="Link">Read more</a> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.1.0-Beta2" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="Sl1MLmv0bMyxDX5ZOWg29A5aE4K5D7s2b9zQslniixxvxt_kVd4dUNmSOr6VtVMEkd8s2R1B42b429xJW8LuQQ" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4Kttf0"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-b8e31a" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (28): KotlinBuild, 03:55PM on October 11" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">28</span> </button> <tool-tip id="tooltip-c499f517-f0ca-4893-89e5-58e246b0c5f3" for="reactions--reaction_button_component-b8e31a" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Gaubee, YektaDev, sphrak, tolik518, MrJohn10, NicosNicolaou16, GabrielLasso, Denisskas, andylamax, its-me-debk007, and 18 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-3bcf04" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (10): KotlinBuild, 03:55PM on October 11" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">10</span> </button> <tool-tip id="tooltip-520f0fbe-e1b4-401b-bc17-9048f06a3bab" for="reactions--reaction_button_component-3bcf04" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, sphrak, GabrielLasso, Denisskas, andylamax, its-me-debk007, salimisler28, tlarcher-gpsw, mal7othify, and ice1000 reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-cbd9c4" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (21): KotlinBuild, 03:55PM on October 11" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">21</span> </button> <tool-tip id="tooltip-8d94cbf3-0a04-4d2a-8a54-0a1742f590c9" for="reactions--reaction_button_component-cbd9c4" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">akiya-nagatsuka, Javernaut, Gaubee, YektaDev, sphrak, Junzz0, GabrielLasso, Denisskas, its-me-debk007, salimisler28, and 11 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-131167" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (13): KotlinBuild, 03:55PM on October 11" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">13</span> </button> <tool-tip id="tooltip-7799ac1e-ca5b-4dec-8adb-4e56ec5be211" for="reactions--reaction_button_component-131167" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, GabrielLasso, Denisskas, its-me-debk007, salimisler28, zaw9oo, sphrak, tlarcher-gpsw, kmorfo, ParaskP7, and 3 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-ebe443" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (26): KotlinBuild, 03:55PM on October 11" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">26</span> </button> <tool-tip id="tooltip-29bc25e8-2fa7-47ca-af35-c630bd5d1d1a" for="reactions--reaction_button_component-ebe443" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sureshg, dzmpr, akiya-nagatsuka, ShiinaKin, Gaubee, YektaDev, agustinsivoplas, sphrak, brewin, alibagherifam, and 16 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-a5a480" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (10): KotlinBuild, 03:55PM on October 11" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">10</span> </button> <tool-tip id="tooltip-ead3b989-36d4-412a-b5a9-2ce0fefd263b" for="reactions--reaction_button_component-a5a480" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, GabrielLasso, Denisskas, its-me-debk007, salimisler28, sphrak, tlarcher-gpsw, mal7othify, runiixx, and dayanruben reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="Gaubee, YektaDev, sphrak, tolik518, MrJohn10, NicosNicolaou16, GabrielLasso, Denisskas, andylamax, its-me-debk007, and 18 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>28 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, sphrak, GabrielLasso, Denisskas, andylamax, its-me-debk007, salimisler28, tlarcher-gpsw, mal7othify, and ice1000 reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>10 reactions</span> </li> <li class="dropdown-item" aria-label="akiya-nagatsuka, Javernaut, Gaubee, YektaDev, sphrak, Junzz0, GabrielLasso, Denisskas, its-me-debk007, salimisler28, and 11 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>21 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, GabrielLasso, Denisskas, its-me-debk007, salimisler28, zaw9oo, sphrak, tlarcher-gpsw, kmorfo, ParaskP7, and 3 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>13 reactions</span> </li> <li class="dropdown-item" aria-label="sureshg, dzmpr, akiya-nagatsuka, ShiinaKin, Gaubee, YektaDev, agustinsivoplas, sphrak, brewin, alibagherifam, and 16 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>26 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, GabrielLasso, Denisskas, its-me-debk007, salimisler28, sphrak, tlarcher-gpsw, mal7othify, runiixx, and dayanruben reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>10 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">50 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-9a4d0a96"> <h2 class="sr-only" id="hd-9a4d0a96">Kotlin 2.0.21</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-10-10T11:45:43Z"> 10 Oct 11:45 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.0.21" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.0.21 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/284e9b4041bd815b5b1b489070bbb1f1db6de35c/hovercard" href="/JetBrains/kotlin/commit/284e9b4041bd815b5b1b489070bbb1f1db6de35c" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">284e9b4</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-97072f3c-af05-11ef-8185-3ba7041f25d1"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-97072f3c-af05-11ef-8185-3ba7041f25d1"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMC4yMQ==" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.0.21" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.0.21" data-view-component="true" class="Link--primary Link">Kotlin 2.0.21</a></span> <span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Apple Ecosystem</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69093" rel="nofollow"><code>KT-69093</code></a> Xcode 16 support in Kotlin</li> </ul> <h3>Backend. Native. Debug</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71374" rel="nofollow"><code>KT-71374</code></a> lldb: step out breaks breaking in Xcode 16</li> </ul> <h3>Compiler</h3> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69735" rel="nofollow"><code>KT-69735</code></a> K2: Static fields are missing from the declaration list of corresponding IrClass for java class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71122" rel="nofollow"><code>KT-71122</code></a> Regression in Kotlin Compiler 2.0 causing NPE in the runtime</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70931" rel="nofollow"><code>KT-70931</code></a> K2 / Scripts: "cannot convert IrExpression to ConstantValue" when using function annotation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70584" rel="nofollow"><code>KT-70584</code></a> K2: "IllegalStateException: flow for PostponedLambdaExitNode not initialized - traversing nodes in wrong order?"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70808" rel="nofollow"><code>KT-70808</code></a> K2: "node has already been visited" with anonymous object in dead code</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69985" rel="nofollow"><code>KT-69985</code></a> K2: Classifier declarations from root package are resolved without imports in non-root packages</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70683" rel="nofollow"><code>KT-70683</code></a> K2: Internal compiler error in IrFakeOverrideSymbolBase.getOwner</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70901" rel="nofollow"><code>KT-70901</code></a> False positive Public-API inline function cannot access non-public-API property accessor</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70930" rel="nofollow"><code>KT-70930</code></a> K2: Java annotations not present on ENUM_ENTRY IR elements</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70194" rel="nofollow"><code>KT-70194</code></a> K2 IDE: exception on a very red file</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69399" rel="nofollow"><code>KT-69399</code></a> Native: IllegalStateException: "Failed to build cache"</li> </ul> <h3>Compose compiler</h3> <h4>Fixes</h4> <ul> <li><a href="https://issuetracker.google.com/issues/329477544" rel="nofollow"><code>b/329477544</code></a> Force open / overridden Composable functions to be non-restartable.</li> <li><a href="https://issuetracker.google.com/issues/361652128" rel="nofollow"><code>b/361652128</code></a> Disable live literal transform if the corresponding flag is disabled</li> </ul> <h3>IR. Actualizer</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70894" rel="nofollow"><code>KT-70894</code></a> IR crash. Unprocessed <code>IrFunctionFakeOverrideSymbol</code> when actualize to Java</li> </ul> <h3>IR. Tree</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71191" rel="nofollow"><code>KT-71191</code></a> SymbolTable: Check if the provided signature is public before adding a symbol to the SymbolTable</li> </ul> <h3>Native. Build Infrastructure</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71485" rel="nofollow"><code>KT-71485</code></a> K/N runtime parts don't build due to _Float16 issues on x86_64 macOS</li> </ul> <h3>Native. C Export</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69507" rel="nofollow"><code>KT-69507</code></a> LLVM 11 clang with Xcode 16 headers: standard c++ headers</li> </ul> <h3>Native. C and ObjC Import</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71029" rel="nofollow"><code>KT-71029</code></a> Investigate why stdarg.h declarations leak into testModuleA</li> </ul> <h3>Native. Platform Libraries</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70566" rel="nofollow"><code>KT-70566</code></a> LLVM 11 clang with Xcode 16 headers: 'sys/cdefs.h' file not found</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71624" rel="nofollow"><code>KT-71624</code></a> Eliminate remaining UIKit/AppKit removed signatures</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70031" rel="nofollow"><code>KT-70031</code></a> Rebuild platform libraries in 2.0.21 with Xcode 16</li> </ul> <h3>Native. Testing</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70603" rel="nofollow"><code>KT-70603</code></a> C++ with -fmodules: cyclic dependency in module 'std': std -> _wctype -> __wctype -> std in dev llvm toolchains</li> </ul> <h3>Tools. CLI. Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71262" rel="nofollow"><code>KT-71262</code></a> KotlinNativeLink tasks fetching from network despite -Xoverride-konan-properties=dependenciesUrl= being set</li> </ul> <h3>Tools. Compiler Plugins</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71038" rel="nofollow"><code>KT-71038</code></a> PowerAssert: Constant on RHS of elvis operator leads to compiler crash</li> </ul> <h3>Tools. Daemon</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-35381" rel="nofollow"><code>KT-35381</code></a> Get rid of the native-platform usage in kotlin compiler</li> </ul> <h3>Tools. Gradle. Multiplatform</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71444" rel="nofollow"><code>KT-71444</code></a> Certain POMs produced by Kotlin 2.0.20 cannot be consumed by KMP projects with Android targets</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70700" rel="nofollow"><code>KT-70700</code></a> Gradle 8.10: The value for task ':commonizeNativeDistribution' property 'kotlinNativeBundleBuildService' cannot be changed any further</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71396" rel="nofollow"><code>KT-71396</code></a> Gradle client side JVM explodes with OOM due to xcodebuild logs</li> </ul> <h3>Tools. Gradle. Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71419" rel="nofollow"><code>KT-71419</code></a> Light bundle KGP IT run against a stable K/N version</li> </ul> <h3>Tools. JPS</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71450" rel="nofollow"><code>KT-71450</code></a> Constant build failure: com.intellij.util.io.ClosedStorageException: storage is already closed</li> </ul></div> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.0.21" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="3wJOAlFmHf_y8DCGaby_yP5e1s59tXIDhpkYcd2sSEX6md3Ib0xsY5pvdGHFYdo4Ydvpldn7KlMRnhSK34wtGA" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4Kr7YT"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-e3db73" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (57): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">57</span> </button> <tool-tip id="tooltip-87b8b6f6-add7-4d60-8958-b6eb85bf994b" for="reactions--reaction_button_component-e3db73" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">NicosNicolaou16, YektaDev, oikvpqya, GabrielLasso, c19yamamoto, sphrak, Decodetalkers, xiaobailong24, tolik518, tlarcher-gpsw, and 47 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-780f3e" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (12): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">12</span> </button> <tool-tip id="tooltip-ba3a43b7-4500-47fc-ad58-456b4ff999a4" for="reactions--reaction_button_component-780f3e" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, GabrielLasso, sphrak, xiaobailong24, tlarcher-gpsw, karim-eg, salimisler28, Smekalisty, hom237, Rafik-DZ, and 2 more reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-9f806d" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (29): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">29</span> </button> <tool-tip id="tooltip-33fcece4-ed9f-4e9b-9762-d209a97280ed" for="reactions--reaction_button_component-9f806d" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">seljabali, f33lnothin9, YektaDev, yongsuk44, GabrielLasso, akiya-nagatsuka, octogene, sphrak, xiaobailong24, tlarcher-gpsw, and 19 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-9eb709" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (31): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">31</span> </button> <tool-tip id="tooltip-ef7b98f3-381f-4019-a3f1-df0135040a17" for="reactions--reaction_button_component-9eb709" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, GabrielLasso, ivanvemat, sphrak, JarWarren, mtrewartha, HaHaWTH, maxmodestov, xiaobailong24, tlarcher-gpsw, and 21 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-2ee0c9" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (29): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">29</span> </button> <tool-tip id="tooltip-891193a5-2de7-4f38-8958-6320d94766dc" for="reactions--reaction_button_component-2ee0c9" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">ShiinaKin, YektaDev, Micnubinub, GabrielLasso, lauzadis, sphrak, petrichor-hl, maxmodestov, xiaobailong24, tlarcher-gpsw, and 19 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-5d7ce0" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (18): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">18</span> </button> <tool-tip id="tooltip-beb96118-792f-4154-9e57-49e93c5fb742" for="reactions--reaction_button_component-5d7ce0" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, GabrielLasso, mrverdant13, sphrak, xiaobailong24, tlarcher-gpsw, karim-eg, salimisler28, curenosm, hom237, and 8 more reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="NicosNicolaou16, YektaDev, oikvpqya, GabrielLasso, c19yamamoto, sphrak, Decodetalkers, xiaobailong24, tolik518, tlarcher-gpsw, and 47 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>57 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, GabrielLasso, sphrak, xiaobailong24, tlarcher-gpsw, karim-eg, salimisler28, Smekalisty, hom237, Rafik-DZ, and 2 more reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>12 reactions</span> </li> <li class="dropdown-item" aria-label="seljabali, f33lnothin9, YektaDev, yongsuk44, GabrielLasso, akiya-nagatsuka, octogene, sphrak, xiaobailong24, tlarcher-gpsw, and 19 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>29 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, GabrielLasso, ivanvemat, sphrak, JarWarren, mtrewartha, HaHaWTH, maxmodestov, xiaobailong24, tlarcher-gpsw, and 21 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>31 reactions</span> </li> <li class="dropdown-item" aria-label="ShiinaKin, YektaDev, Micnubinub, GabrielLasso, lauzadis, sphrak, petrichor-hl, maxmodestov, xiaobailong24, tlarcher-gpsw, and 19 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>29 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, GabrielLasso, mrverdant13, sphrak, xiaobailong24, tlarcher-gpsw, karim-eg, salimisler28, curenosm, hom237, and 8 more reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>18 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">100 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-81108c76"> <h2 class="sr-only" id="hd-81108c76">Kotlin 2.0.21-RC</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-10-01T08:42:35Z"> 01 Oct 08:42 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.0.21-RC" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.0.21-RC </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/284e9b4041bd815b5b1b489070bbb1f1db6de35c/hovercard" href="/JetBrains/kotlin/commit/284e9b4041bd815b5b1b489070bbb1f1db6de35c" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">284e9b4</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-970a1210-af05-11ef-989d-aba532ea2aca"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-970a1210-af05-11ef-989d-aba532ea2aca"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMC4yMS1SQw==" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.0.21-RC" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.0.21-RC" data-view-component="true" class="Link--primary Link">Kotlin 2.0.21-RC</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>2.0.21-RC</h2> <h3>Apple Ecosystem</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69093" rel="nofollow"><code>KT-69093</code></a> Xcode 16 support in Kotlin</li> </ul> <h3>Backend. Native. Debug</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71374" rel="nofollow"><code>KT-71374</code></a> lldb: step out breaks breaking in Xcode 16</li> </ul> <h3>Compiler</h3> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69735" rel="nofollow"><code>KT-69735</code></a> K2: Static fields are missing from the declaration list of corresponding IrClass for java class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71122" rel="nofollow"><code>KT-71122</code></a> Regression in Kotlin Compiler 2.0 causing NPE in the runtime</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70931" rel="nofollow"><code>KT-70931</code></a> K2 / Scripts: "cannot convert IrExpression to ConstantValue" when using function annotation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70584" rel="nofollow"><code>KT-70584</code></a> K2: "IllegalStateException: flow for PostponedLambdaExitNode not initialized - traversing nodes in wrong order?"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70808" rel="nofollow"><code>KT-70808</code></a> K2: "node has already been visited" with anonymous object in dead code</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69985" rel="nofollow"><code>KT-69985</code></a> K2: Classifier declarations from root package are resolved without imports in non-root packages</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70683" rel="nofollow"><code>KT-70683</code></a> K2: Internal compiler error in IrFakeOverrideSymbolBase.getOwner</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70901" rel="nofollow"><code>KT-70901</code></a> False positive Public-API inline function cannot access non-public-API property accessor</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70930" rel="nofollow"><code>KT-70930</code></a> K2: Java annotations not present on ENUM_ENTRY IR elements</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70194" rel="nofollow"><code>KT-70194</code></a> K2 IDE: exception on a very red file</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69399" rel="nofollow"><code>KT-69399</code></a> Native: IllegalStateException: "Failed to build cache"</li> </ul> <h3>Compose compiler</h3> <h4>Fixes</h4> <ul> <li><a href="https://issuetracker.google.com/issues/329477544" rel="nofollow"><code>b/329477544</code></a> Force open / overridden Composable functions to be non-restartable.</li> <li><a href="https://issuetracker.google.com/issues/361652128" rel="nofollow"><code>b/361652128</code></a> Disable live literal transform if the corresponding flag is disabled</li> </ul> <h3>IR. Actualizer</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70894" rel="nofollow"><code>KT-70894</code></a> IR crash. Unprocessed <code>IrFunctionFakeOverrideSymbol</code> when actualize to Java</li> </ul> <h3>IR. Tree</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71191" rel="nofollow"><code>KT-71191</code></a> SymbolTable: Check if the provided signature is public before adding a symbol to the SymbolTable</li> </ul> <h3>Native. Build Infrastructure</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71485" rel="nofollow"><code>KT-71485</code></a> K/N runtime parts don't build due to _Float16 issues on x86_64 macOS</li> </ul> <h3>Native. C Export</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69507" rel="nofollow"><code>KT-69507</code></a> LLVM 11 clang with Xcode 16 headers: standard c++ headers</li> </ul> <h3>Native. C and ObjC Import</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71029" rel="nofollow"><code>KT-71029</code></a> Investigate why stdarg.h declarations leak into testModuleA</li> </ul> <h3>Native. Platform Libraries</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70566" rel="nofollow"><code>KT-70566</code></a> LLVM 11 clang with Xcode 16 headers: 'sys/cdefs.h' file not found</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71624" rel="nofollow"><code>KT-71624</code></a> Eliminate remaining UIKit/AppKit removed signatures</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70031" rel="nofollow"><code>KT-70031</code></a> Rebuild platform libraries in 2.0.21 with Xcode 16</li> </ul> <h3>Native. Testing</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70603" rel="nofollow"><code>KT-70603</code></a> C++ with -fmodules: cyclic dependency in module 'std': std -> _wctype -> __wctype -> std in dev llvm toolchains</li> </ul> <h3>Tools. CLI. Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71262" rel="nofollow"><code>KT-71262</code></a> KotlinNativeLink tasks fetching from network despite -Xoverride-konan-properties=dependenciesUrl= being set</li> </ul> <h3>Tools. Compiler Plugins</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71038" rel="nofollow"><code>KT-71038</code></a> PowerAssert: Constant on RHS of elvis operator leads to compiler crash</li> </ul> <h3>Tools. Daemon</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-35381" rel="nofollow"><code>KT-35381</code></a> Get rid of the native-platform usage in kotlin compiler</li> </ul> <h3>Tools. Gradle. Multiplatform</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71444" rel="nofollow"><code>KT-71444</code></a> Certain POMs produced by Kotlin 2.0.20 cannot be consumed by KMP projects with Android targets</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70700" rel="nofollow"><code>KT-70700</code></a> Gradle 8.10: The value for task ':commonizeNativeDistribution' property 'kotlinNativeBundleBuildService' cannot be changed any further</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-71396" rel="nofollow"><code>KT-71396</code></a> Gradle client side JVM explodes with OOM due to xcodebuild logs</li> </ul> <h3>Tools. Gradle. Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71419" rel="nofollow"><code>KT-71419</code></a> Light bundle KGP IT run against a stable K/N version</li> </ul> <h3>Tools. JPS</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-71450" rel="nofollow"><code>KT-71450</code></a> Constant build failure: com.intellij.util.io.ClosedStorageException: storage is already closed</li> </ul></div> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.0.21-RC" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="rL1sw2TqvfUhHXME9tptAsVZ2HjNx5tmrhZunqFtqqGJJv8JWsDMaUmCN-NaBwjyWtznI2mJwzY5EWJlo03P_A" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4KmDs1"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-2edfec" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (33): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">33</span> </button> <tool-tip id="tooltip-65f057e3-fae1-464c-be98-f5c986e0edc3" for="reactions--reaction_button_component-2edfec" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">NicosNicolaou16, sphrak, machado001, bjarneheden, YektaDev, phalcorine, sellmair, jefrydco, danielgospodinow, dayanruben, and 23 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-c87081" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (12): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">12</span> </button> <tool-tip id="tooltip-d77a50ee-17d5-403d-a252-b603c25a67f9" for="reactions--reaction_button_component-c87081" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">basurahan, Denisskas, vlvs, mubarakaali, orelvis15, tlarcher-gpsw, dayanruben, Smekalisty, Monabr, Junzz0, and 2 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-6153c7" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (19): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">19</span> </button> <tool-tip id="tooltip-0609eaf4-6902-42e1-8475-b59f8c332358" for="reactions--reaction_button_component-6153c7" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Elelan, sphrak, kibettheophilus, YektaDev, phalcorine, sellmair, jefrydco, danielgospodinow, csanfilippo, dayanruben, and 9 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-1e1426" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (30): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">30</span> </button> <tool-tip id="tooltip-210bdaa7-9d68-4202-bd1f-eb110e2445f9" for="reactions--reaction_button_component-1e1426" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sureshg, Lavmee, tamimattafi, Elelan, sphrak, Legion2, octogene, YektaDev, spamegg1, akiya-nagatsuka, and 20 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-f861d5" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (11): KotlinBuild, 02:17PM on September 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">11</span> </button> <tool-tip id="tooltip-b5732376-b3ef-4529-9cca-5b673c5ccbbe" for="reactions--reaction_button_component-f861d5" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Elelan, YektaDev, sellmair, dayanruben, mrverdant13, Denisskas, vlvs, curenosm, orelvis15, tlarcher-gpsw, and jadar reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="NicosNicolaou16, sphrak, machado001, bjarneheden, YektaDev, phalcorine, sellmair, jefrydco, danielgospodinow, dayanruben, and 23 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>33 reactions</span> </li> <li class="dropdown-item" aria-label="basurahan, Denisskas, vlvs, mubarakaali, orelvis15, tlarcher-gpsw, dayanruben, Smekalisty, Monabr, Junzz0, and 2 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>12 reactions</span> </li> <li class="dropdown-item" aria-label="Elelan, sphrak, kibettheophilus, YektaDev, phalcorine, sellmair, jefrydco, danielgospodinow, csanfilippo, dayanruben, and 9 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>19 reactions</span> </li> <li class="dropdown-item" aria-label="sureshg, Lavmee, tamimattafi, Elelan, sphrak, Legion2, octogene, YektaDev, spamegg1, akiya-nagatsuka, and 20 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>30 reactions</span> </li> <li class="dropdown-item" aria-label="Elelan, YektaDev, sellmair, dayanruben, mrverdant13, Denisskas, vlvs, curenosm, orelvis15, tlarcher-gpsw, and jadar reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>11 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">61 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-fee115d3"> <h2 class="sr-only" id="hd-fee115d3">Kotlin 2.1.0-Beta1</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-09-17T13:09:55Z"> 17 Sep 13:09 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.1.0-Beta1" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.1.0-Beta1 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/9a2a05bfaa52a42f98543668366a5c86bc132ab3/hovercard" href="/JetBrains/kotlin/commit/9a2a05bfaa52a42f98543668366a5c86bc132ab3" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">9a2a05b</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-970ca69c-af05-11ef-932d-3f251577afe1"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-970ca69c-af05-11ef-932d-3f251577afe1"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMS4wLUJldGEx" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.1.0-Beta1" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.1.0-Beta1" data-view-component="true" class="Link--primary Link">Kotlin 2.1.0-Beta1</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Analysis. API</h3> <h4>New Features</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-68603" rel="nofollow"><code>KT-68603</code></a> KotlinDirectInheritorsProvider: add an option to ignore non-kotlin results</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69961" rel="nofollow"><code>KT-69961</code></a> <code>resolveToCallCandidates</code> should support properties</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69960" rel="nofollow"><code>KT-69960</code></a> <code>resolveToCallCandidates</code> should support operators</li> </ul> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70757" rel="nofollow"><code>KT-70757</code></a> Performance problem in KaFirVisibilityChecker for KaFirPsiJavaClassSymbol</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70529" rel="nofollow"><code>KT-70529</code></a> KaSymbol: reduce the number of <code>cached</code> usages</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-65618" rel="nofollow"><code>KT-65618</code></a> K2: resulted FirClass.psi != requested PsiClass from completion</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70323" rel="nofollow"><code>KT-70323</code></a> FirLazyResolveContractViolationException: <code>lazyResolveToPhase(TYPES)</code> cannot be called from a transformer with a phase TYPES</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69535" rel="nofollow"><code>KT-69535</code></a> Redesign 'containingSymbol'</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70859" rel="nofollow"><code>KT-70859</code></a> Do not fail highlighting due to resolution problems</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67483" rel="nofollow"><code>KT-67483</code></a> K2 IDE: Serializable plugin causes infinite resolve recursion when there is a star import from a class with annotation call</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-63490" rel="nofollow"><code>KT-63490</code></a> Analysis API: Accessing the Analysis API should be prohibited during dumb mode</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69416" rel="nofollow"><code>KT-69416</code></a> K2 IDE / Completion: “No classifier found” on simple value creating</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70663" rel="nofollow"><code>KT-70663</code></a> KaFirDestructuringDeclarationSymbol: Failed requirement</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70662" rel="nofollow"><code>KT-70662</code></a> NPE: FirLazyBodiesCalculatorKt.calculateLazyBodyForProperty</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70661" rel="nofollow"><code>KT-70661</code></a> Invalid FirDeclarationOrigin ScriptTopLevelDestructuringDeclarationContainer</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70624" rel="nofollow"><code>KT-70624</code></a> Declaration symbols from code fragments are treated as not local</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70257" rel="nofollow"><code>KT-70257</code></a> CCE: class kotlin.UInt cannot be cast to class java.lang.Number</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69070" rel="nofollow"><code>KT-69070</code></a> Analysis API: Querying declared member scope for Java symbols results in exception in some use cases</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70199" rel="nofollow"><code>KT-70199</code></a> K2: ConcurrentModificationException at FirCallCompleter$LambdaAnalyzerImpl.analyzeAndGetLambdaReturnArguments</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70376" rel="nofollow"><code>KT-70376</code></a> K2 IDE / Kotlin Debugger: IAE “Only componentN functions should be cached this way, but got: toString” on evaluating toString() method for value class</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70264" rel="nofollow"><code>KT-70264</code></a> AA: service registration via XML fails with AbstractMethodError in Lint CLI</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69381" rel="nofollow"><code>KT-69381</code></a> Analysis API: Investigate the viability of current <code>KaSymbol</code> caches</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69950" rel="nofollow"><code>KT-69950</code></a> Analysis API: Introduce <code>isSubtypeOf(ClassId)</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68625" rel="nofollow"><code>KT-68625</code></a> K2: “<code>lazyResolveToPhase(STATUS)</code> cannot be called from a transformer with a phase STATUS.”</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67009" rel="nofollow"><code>KT-67009</code></a> Analysis API: Add abbreviated type tests for type aliases from source modules</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69977" rel="nofollow"><code>KT-69977</code></a> KaFirFunctionalType#getAbbreviation is always null</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68341" rel="nofollow"><code>KT-68341</code></a> Analysis API: Expanded function types from libraries don't have an abbreviated type</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68857" rel="nofollow"><code>KT-68857</code></a> Analysis API: Refactor annotations</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70386" rel="nofollow"><code>KT-70386</code></a> Do not filter out overloads from different libraries in dangling files</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65552" rel="nofollow"><code>KT-65552</code></a> K2: CANNOT_CHECK_FOR_ERASED in KtTypeCodeFragment</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69360" rel="nofollow"><code>KT-69360</code></a> Lack of implicit receiver for the last statement under lambda in scripts</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69699" rel="nofollow"><code>KT-69699</code></a> Receiver type is not substituted in the case of conflict declarations</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70206" rel="nofollow"><code>KT-70206</code></a> <code>anonymousSymbol</code> API throws an exception for regular functions</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65803" rel="nofollow"><code>KT-65803</code></a> K2: Analysis API: KtFirTypeProvider#getSubstitutedSuperTypes throws an exception in the case of "Wrong number of type arguments"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68896" rel="nofollow"><code>KT-68896</code></a> Support VirtualFile binary dependency inputs to Analysis API modules</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69671" rel="nofollow"><code>KT-69671</code></a> TYPES phase contract violation through JavaSymbolProvider</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69395" rel="nofollow"><code>KT-69395</code></a> K2 IDE: incorrect overload selection from binary dependencies in a shared native source set</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68573" rel="nofollow"><code>KT-68573</code></a> ISE: "Unexpected constant value (kotlin/annotation/AnnotationTarget, CLASS)" at Kt1DescUtilsKt.toKtConstantValue()</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69576" rel="nofollow"><code>KT-69576</code></a> Analysis API: FIR implementation of "isImplicitReferenceToCompanion" returns false for companion references in implicit invoke operator calls</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69568" rel="nofollow"><code>KT-69568</code></a> Analysis API: FIR implementation of "isImplicitReferenceToCompanion" returns true for non-companion references in qualified calls</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-55124" rel="nofollow"><code>KT-55124</code></a> Design common ancestor for KtValueParameter and KtReceiverParameterSymbol</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69436" rel="nofollow"><code>KT-69436</code></a> Analysis API Platform: Encapsulate <code>LLFirDeclarationModificationService</code> as an engine service</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-63004" rel="nofollow"><code>KT-63004</code></a> K2: Analysis API: Design API for querying declarations generated by compiler plugins (similar to indices)</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69452" rel="nofollow"><code>KT-69452</code></a> AA FIR: wrong source PSI after compile-time evaluation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69679" rel="nofollow"><code>KT-69679</code></a> KaDelegatedConstructorCall should have substituted signature</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69696" rel="nofollow"><code>KT-69696</code></a> KaSymbolByFirBuilder should filter call-site substitutions</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69598" rel="nofollow"><code>KT-69598</code></a> AA: definitely not-null type at receiver position should be wrapped in parenthesis</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60484" rel="nofollow"><code>KT-60484</code></a> Analysis API: add support for KtType pointers similar to KtSymbolPointer</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68884" rel="nofollow"><code>KT-68884</code></a> Analysis API: Rename/deprecate/remove declarations as part of Stabilization</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69292" rel="nofollow"><code>KT-69292</code></a> K2: Analysis API: A property's <code>MUST_BE_INITIALIZED</code> diagnostic is not updated after changing <code>field</code> usage in an accessor</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69453" rel="nofollow"><code>KT-69453</code></a> AA FIR: miss to handle expected type of lambda with explicit label</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69371" rel="nofollow"><code>KT-69371</code></a> Analysis API: expose only interfaces/abstract classes for the resolution API</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69533" rel="nofollow"><code>KT-69533</code></a> Protect implementation parts of Analysis API with opt-in annotations</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68268" rel="nofollow"><code>KT-68268</code></a> LLSealedInheritorsProvider: reduce scope to kotlin files</li> </ul> <h3>Analysis. Light Classes</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70710" rel="nofollow"><code>KT-70710</code></a> Provide light classes for KMP modules in Android Lint</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70548" rel="nofollow"><code>KT-70548</code></a> SLC: text of class object access expression is not the same as raw text</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70572" rel="nofollow"><code>KT-70572</code></a> SLC: missing <code>isInheritor</code> implementation for type parameter</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70491" rel="nofollow"><code>KT-70491</code></a> SLC: inconsistent source PSI of no-arg constructor for all default values</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70458" rel="nofollow"><code>KT-70458</code></a> SLC: missed <code>auxiliaryOriginalElement</code> for delegated property</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70232" rel="nofollow"><code>KT-70232</code></a> Support a companion object inside value classes</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70349" rel="nofollow"><code>KT-70349</code></a> <code>@delegate</code>:` annotations are missed for light class fields</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69833" rel="nofollow"><code>KT-69833</code></a> Support value classes</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69998" rel="nofollow"><code>KT-69998</code></a> Drop redundant cache from ClassInnerStuffCache</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68328" rel="nofollow"><code>KT-68328</code></a> Move KtLightClassBase to ULC</li> </ul> <h3>Apple Ecosystem</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-66262" rel="nofollow"><code>KT-66262</code></a> Deprecate and remove support for bitcode embedding from the Kotlin Gradle plugin</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69119" rel="nofollow"><code>KT-69119</code></a> xcodeVersion task fails if Xcode isn't installed and apple-specific native targets aren't declared</li> </ul> <h3>Backend. Wasm</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70786" rel="nofollow"><code>KT-70786</code></a> Improve DX of the variable view during debugging in Chrome/Firefox for Kotlin/Wasm</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68185" rel="nofollow"><code>KT-68185</code></a> [WasmJs] Attach js exception object to JsException</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65799" rel="nofollow"><code>KT-65799</code></a> K/Wasm: remove default exports from wasm exports</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-61130" rel="nofollow"><code>KT-61130</code></a> K/Wasm: Function signatures may clash with base class internal methods from a friend module</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70394" rel="nofollow"><code>KT-70394</code></a> Investigate increased wasm binary size after switching stdlib compilation to K2</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69627" rel="nofollow"><code>KT-69627</code></a> Remove `create###A...</li> </ul></div> <a href="/JetBrains/kotlin/releases/tag/v2.1.0-Beta1" data-view-component="true" class="Link">Read more</a> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.1.0-Beta1" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="uTDTdV3UKBpxuib_mCyqFI55G01_S68RLeBIck7oW46cq0C_Y_5ZhhklYhg08c_kEfwkFtsF90G650SJTMg-0w" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4KdPKB"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-f2af1a" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (19): KotlinBuild, 07:58AM on September 16" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">19</span> </button> <tool-tip id="tooltip-1535b19d-1c0c-45e4-848b-497bf16305a7" for="reactions--reaction_button_component-f2af1a" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">NicosNicolaou16, tolik518, ltttttttttttt, Denisskas, Quillraven, salimisler28, Elelan, YektaDev, YurePereira, dayanruben, and 9 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-af0e6d" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (28): KotlinBuild, 07:58AM on September 16" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">28</span> </button> <tool-tip id="tooltip-ecf5e676-83e8-4911-9bd3-86567f3006f8" for="reactions--reaction_button_component-af0e6d" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">philip-segerfast, Denisskas, toasterofbread, Elelan, arsildo, Allan-Nava, sphrak, danielgospodinow, alibagherifam, cvb941, and 18 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-fe76a1" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (18): KotlinBuild, 07:58AM on September 16" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">18</span> </button> <tool-tip id="tooltip-5afcc475-069a-4658-bfdd-75a1b223c508" for="reactions--reaction_button_component-fe76a1" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sphrak, mrverdant13, AxonDragonScale, mohamedtamer0, Denisskas, salimisler28, frankhale, Elelan, YektaDev, YurePereira, and 8 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-e154e9" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (28): KotlinBuild, 07:58AM on September 16" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">28</span> </button> <tool-tip id="tooltip-a3467099-002a-4b22-8702-e72ac01ea1a8" for="reactions--reaction_button_component-e154e9" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">ShiinaKin, Lavmee, DragonSpirit666, Rafael2616, thoutbeckers, philip-segerfast, Denisskas, MohamedRejeb, Elelan, sphrak, and 18 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-0da116" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (9): KotlinBuild, 07:58AM on September 16" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">9</span> </button> <tool-tip id="tooltip-6fe47ba0-c123-4110-946e-ef6c4d80c981" for="reactions--reaction_button_component-0da116" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Smekalisty, salimisler28, Elelan, YektaDev, Denisskas, dayanruben, YaminMahdi, apolostudio, and tlarcher-gpsw reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="NicosNicolaou16, tolik518, ltttttttttttt, Denisskas, Quillraven, salimisler28, Elelan, YektaDev, YurePereira, dayanruben, and 9 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>19 reactions</span> </li> <li class="dropdown-item" aria-label="philip-segerfast, Denisskas, toasterofbread, Elelan, arsildo, Allan-Nava, sphrak, danielgospodinow, alibagherifam, cvb941, and 18 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>28 reactions</span> </li> <li class="dropdown-item" aria-label="sphrak, mrverdant13, AxonDragonScale, mohamedtamer0, Denisskas, salimisler28, frankhale, Elelan, YektaDev, YurePereira, and 8 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>18 reactions</span> </li> <li class="dropdown-item" aria-label="ShiinaKin, Lavmee, DragonSpirit666, Rafael2616, thoutbeckers, philip-segerfast, Denisskas, MohamedRejeb, Elelan, sphrak, and 18 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>28 reactions</span> </li> <li class="dropdown-item" aria-label="Smekalisty, salimisler28, Elelan, YektaDev, Denisskas, dayanruben, YaminMahdi, apolostudio, and tlarcher-gpsw reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>9 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">58 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-73680d7f"> <h2 class="sr-only" id="hd-73680d7f">Kotlin 2.0.20</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-08-22T11:10:29Z"> 22 Aug 11:10 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.0.20" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.0.20 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/6af99c83470813023dace7d3bd850c6fef8e50c0/hovercard" href="/JetBrains/kotlin/commit/6af99c83470813023dace7d3bd850c6fef8e50c0" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">6af99c8</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-970f8dc6-af05-11ef-9767-0d603534f452"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-970f8dc6-af05-11ef-9767-0d603534f452"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMC4yMA==" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.0.20" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.0.20" data-view-component="true" class="Link--primary Link">Kotlin 2.0.20</a></span> <span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Analysis. API</h3> <h4>New Features</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-68143" rel="nofollow"><code>KT-68143</code></a> Analysis API: support KtWhenConditionInRange call resolution</li> </ul> <h4>Performance Improvements</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-67195" rel="nofollow"><code>KT-67195</code></a> K2: do not call redundant resolve on body resolution phase for classes</li> </ul> <h4>Fixes</h4> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-67360" rel="nofollow"><code>KT-67360</code></a> Analysis API: KtDestructuringDeclarationSymbol#entries shouldn't be KtLocalVariableSymbol</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67748" rel="nofollow"><code>KT-67748</code></a> K2: AllCandidatesResolver modifies the original FirDelegatedConstructorCall</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68198" rel="nofollow"><code>KT-68198</code></a> Analysis API: Support application service registration in plugin XMLs</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-62936" rel="nofollow"><code>KT-62936</code></a> Analysis API: NativeForwardDeclarationsSymbolProvider is not supported for Kotlin/Native</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68689" rel="nofollow"><code>KT-68689</code></a> LL API: support analysis from builtins module</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69630" rel="nofollow"><code>KT-69630</code></a> KAPT User project builds with KAPT4 enabled fail with Metaspace overflow</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65417" rel="nofollow"><code>KT-65417</code></a> K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68882" rel="nofollow"><code>KT-68882</code></a> Analysis API: Refactor <code>KaSymbol</code>s</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65413" rel="nofollow"><code>KT-65413</code></a> K2 IDE: KTOR unresolved serializer() call for <code>@Serializable</code> class in common code</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67996" rel="nofollow"><code>KT-67996</code></a> Analysis API: rename Kt prefix to Ka</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67775" rel="nofollow"><code>KT-67775</code></a> Analysis API: expose only interfaces/abstract classes for the user surface</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68009" rel="nofollow"><code>KT-68009</code></a> K2: lowering transformers of Compose compiler plugin access AbstractFir2IrLazyFunction modality, which results in null point exception</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68918" rel="nofollow"><code>KT-68918</code></a> collectCallCandidates works incorrectly for parenthesis invoke</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68462" rel="nofollow"><code>KT-68462</code></a> Analysis API: Integrate <code>project-structure</code> module into <code>analysis-api</code> and <code>analysis-api-platform-interface</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69131" rel="nofollow"><code>KT-69131</code></a> AA: "provideDelegate" operator is not resolved from the delegation reference in FIR implementation</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69055" rel="nofollow"><code>KT-69055</code></a> Analysis API: Stabilize <code>KaScope</code>s</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66216" rel="nofollow"><code>KT-66216</code></a> K2 IDE. "FirDeclaration was not found for class org.jetbrains.kotlin.psi.KtProperty, fir is null" on incorrect string template</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68959" rel="nofollow"><code>KT-68959</code></a> Introduce KaSeverity</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-53669" rel="nofollow"><code>KT-53669</code></a> Analysis API: redesign KtSymbolOrigin to distinguish kotlin/java source/library declarations</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68846" rel="nofollow"><code>KT-68846</code></a> Mark KaFirReference and all implementations with internal modifier</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68845" rel="nofollow"><code>KT-68845</code></a> Move KaSymbolBasedReference to resolution package</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68844" rel="nofollow"><code>KT-68844</code></a> Move KaTypeProjection to types package</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65849" rel="nofollow"><code>KT-65849</code></a> K2: Rename 'high-level-api' family of JARs to 'analysis-api'</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-62540" rel="nofollow"><code>KT-62540</code></a> Remove uses of TypeInfo.fromString and TypeInfo.createTypeText from Kotlin plugin</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-62889" rel="nofollow"><code>KT-62889</code></a> K2 IDE. FP <code>MISSING_DEPENDENCY_CLASS</code> on not available type alias with available underlying type</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68155" rel="nofollow"><code>KT-68155</code></a> Analysis API: Add PSI validity check to <code>analyze</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-62343" rel="nofollow"><code>KT-62343</code></a> Analysis API: fix binary incopatibility problems cause by <code>KtAnalysisSessionProvider.analyze</code> being inline</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68498" rel="nofollow"><code>KT-68498</code></a> To get reference symbol the one should be KtSymbolBasedReference</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68393" rel="nofollow"><code>KT-68393</code></a> Analysis API: Rename <code>KaClassLikeSymbol. classIdIfNonLocal</code> to <code>classId</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-62924" rel="nofollow"><code>KT-62924</code></a> Analysis API: rename KtCallableSymbol.callableIdIfNonLocal -> callableId</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66712" rel="nofollow"><code>KT-66712</code></a> K2 IDE. SOE on settings string template for string variable with the same name</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65892" rel="nofollow"><code>KT-65892</code></a> K2: "We should be able to find a symbol" for findNonLocalFunction</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68273" rel="nofollow"><code>KT-68273</code></a> AA: support <code>KtFirKDocReference#isReferenceToImportAlias</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68272" rel="nofollow"><code>KT-68272</code></a> AA: KtFirReference.isReferenceToImportAlias doesn't work for references on constructor</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66996" rel="nofollow"><code>KT-66996</code></a> Analysis API: Expose the abbreviated type of an expanded <code>KtType</code></li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66646" rel="nofollow"><code>KT-66646</code></a> K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl from FirJsHelpersKt.isExportedObject</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68203" rel="nofollow"><code>KT-68203</code></a> K2: Analysis API: wrong type of receiver value in case of imported object member</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68031" rel="nofollow"><code>KT-68031</code></a> LL resolve crash in case of PCLA inference with local object</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67851" rel="nofollow"><code>KT-67851</code></a> K2: <code>PsiReference#isReferenceTo</code> always returns false for references to Java getters</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68076" rel="nofollow"><code>KT-68076</code></a> AA: use type code fragments for import alias detection</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65915" rel="nofollow"><code>KT-65915</code></a> K2: Analysis API: extract services registration into xml file</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68049" rel="nofollow"><code>KT-68049</code></a> Analysis API: do not expose imported symbols</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68075" rel="nofollow"><code>KT-68075</code></a> K2: Analysis API: Type arguments for delegation constructor to java constructor with type parameters not supported</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65190" rel="nofollow"><code>KT-65190</code></a> AA: reference to the super type is not resolved</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68070" rel="nofollow"><code>KT-68070</code></a> AA: KtExpressionInfoProvider#isUsedAsExpression doesn't work for KtPropertyDelegate</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67743" rel="nofollow"><code>KT-67743</code></a> K2: Stubs & AbbreviatedTypeAttribute</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67706" rel="nofollow"><code>KT-67706</code></a> K2: "KtDotQualifiedExpression is not a subtype of class KtNamedDeclaration" from UnusedChecker</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68021" rel="nofollow"><code>KT-68021</code></a> Analysis API: do not break the diagnostic collection in a case of exception from some collector</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67973" rel="nofollow"><code>KT-67973</code></a> AA FIR: wrong KtCall modeling for == from type bound</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67949" rel="nofollow"><code>KT-67949</code></a> AA: Type arguments of Java methods' calls are not reported as used by KtFirImportOptimizer</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67988" rel="nofollow"><code>KT-67988</code></a> AA: functional type at receiver position should be wrapped in parenthesis</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66536" rel="nofollow"><code>KT-66536</code></a> Analysis API: ContextCollector doesn't provide implicit receivers from FirExpressionResolutionExtension</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67321" rel="nofollow"><code>KT-67321</code></a> AA: Type arguments of Java methods' calls are not resolved</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-64158" rel="nofollow"><code>KT-64158</code></a> K2: "KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtParameter"</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60344" rel="nofollow"><code>KT-60344</code></a> K2 IDE. "KotlinExceptionWithAttachments: expect <code>createKtCall</code> to succeed for resolvable case with callable symbol" on attempt to assign value to param named getParam</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-64599" rel="nofollow"><code>KT-64599</code></a> K2: "expect <code>createKtCall</code> to succeed for resolvable case with callable" for unfinished if statement</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60330" rel="nofollow"><code>KT-60330</code></a> K2 IDE. ".KotlinExceptionWithAttachments: expect <code>createKtCall</code> to succeed for resolvable case with callable symbol" on attempt to assign or compare true with something</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66672" rel="nofollow"><code>KT-66672</code></a> K2 IDE. False positive INVISIBLE_REFERENCE on accessing private subclass as type argument in parent class declaration</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67750" rel="nofollow"><code>KT-67750</code></a> Analysis API: Remove <code>infix</code> modifiers from type equality and subtyping functions</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67655" rel="nofollow"><code>KT-67655</code></a> Analysis API: declare a rule how to deal with parameters in KtLifetimeOwner</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-61775" rel="nofollow"><code>KT-61775</code></a> Analysis API: KtKClassAnnotationValue lacks complete type information</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67168" rel="nofollow"><code>KT-67168</code></a> K2: Analysis API: Rendering is broken for JSR-305 enhanced Java types</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66689" rel="nofollow"><code>KT-66689</code></a> Analysis API: KtFirPackageScope shouldn't rely on KotlinDeclarationProvider for binary dependencies in standalone mode</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60483" rel="nofollow"><code>KT-60483</code></a> Analysis API: add isTailrec property to KtFunctionSymbol</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67472" rel="nofollow"><code>KT-67472</code></a> K2: Analysis API FIR: KtFunctionCall misses argument with desugared expressions</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-65759" rel="nofollow"><code>KT-65759</code></a> Analysis API: Avoid hard references to <code>LLFirSession</code> in session validity trackers</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-60272" rel="nofollow"><code>KT-60272</code></a> K2: Implement active invalidation of <code>KtAnalysisSession</code>s</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-66765" rel="nofollow"><code>KT-66765</code></a> K2: Analysis API: support classpath substituti...</li> </ul></div> <a href="/JetBrains/kotlin/releases/tag/v2.0.20" data-view-component="true" class="Link">Read more</a> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.0.20" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="bTJr3r-61giD4qWEoBwpAEzY-1bkwDnlTgDawxfuvG9IqfgUgZCnlOt94WMMwUzw013EDUCOYbXZB9Y4Fc7ZMg" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4KN9wh"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-0cb935" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (61): KotlinBuild, 10:32AM on August 20" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">61</span> </button> <tool-tip id="tooltip-458141d7-0f63-4ed4-bbd3-984358591ffe" for="reactions--reaction_button_component-0cb935" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">lppedd, dzmpr, hom237, orelvis15, PMARZV, twiceyuan, YektaDev, StijnDRZP, rocketraman, MohamedRejeb, and 51 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-bf4263" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (17): KotlinBuild, 10:32AM on August 20" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">17</span> </button> <tool-tip id="tooltip-22fae13a-0d0b-44e0-873a-faaca8279f99" for="reactions--reaction_button_component-bf4263" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">jiao123456789, nozoo1025, orelvis15, PMARZV, YektaDev, sphrak, dayanruben, amrhossamdev, Elelan, salimisler28, and 7 more reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-b9192a" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (65): KotlinBuild, 10:32AM on August 20" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">65</span> </button> <tool-tip id="tooltip-dba26577-4156-4b00-b1c1-359d38a32e06" for="reactions--reaction_button_component-b9192a" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">akiya-nagatsuka, ltttttttttttt, alibagherifam, jiao123456789, nozoo1025, hezean, illarionov, Him188, pablichjenkov, f33lnothin9, and 55 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-28f46f" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (33): KotlinBuild, 10:32AM on August 20" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">33</span> </button> <tool-tip id="tooltip-592154f4-64f1-46f7-880e-0b67913b9d18" for="reactions--reaction_button_component-28f46f" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">ritesh-singh, nozoo1025, hom237, orelvis15, PMARZV, YektaDev, Stavrenas, FlxB2, StijnDRZP, MohamedRejeb, and 23 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-142d87" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (44): KotlinBuild, 10:32AM on August 20" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">44</span> </button> <tool-tip id="tooltip-a59eff00-74b1-40e5-9667-542e44ae868a" for="reactions--reaction_button_component-142d87" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">tozydev, alibagherifam, nozoo1025, Kilemonn, benckx, dzmpr, sureshg, L1shed, orelvis15, PMARZV, and 34 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-451ad3" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (11): KotlinBuild, 10:32AM on August 20" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">11</span> </button> <tool-tip id="tooltip-bcce77bd-f954-41a0-99ac-ed70ac21c420" for="reactions--reaction_button_component-451ad3" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, sphrak, Elelan, salimisler28, Mystery406, GabrielLasso, liukaigsx, Macdotexe, rd-yan-farba, tlarcher-gpsw, and TaoMY2399967884 reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="lppedd, dzmpr, hom237, orelvis15, PMARZV, twiceyuan, YektaDev, StijnDRZP, rocketraman, MohamedRejeb, and 51 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>61 reactions</span> </li> <li class="dropdown-item" aria-label="jiao123456789, nozoo1025, orelvis15, PMARZV, YektaDev, sphrak, dayanruben, amrhossamdev, Elelan, salimisler28, and 7 more reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>17 reactions</span> </li> <li class="dropdown-item" aria-label="akiya-nagatsuka, ltttttttttttt, alibagherifam, jiao123456789, nozoo1025, hezean, illarionov, Him188, pablichjenkov, f33lnothin9, and 55 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>65 reactions</span> </li> <li class="dropdown-item" aria-label="ritesh-singh, nozoo1025, hom237, orelvis15, PMARZV, YektaDev, Stavrenas, FlxB2, StijnDRZP, MohamedRejeb, and 23 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>33 reactions</span> </li> <li class="dropdown-item" aria-label="tozydev, alibagherifam, nozoo1025, Kilemonn, benckx, dzmpr, sureshg, L1shed, orelvis15, PMARZV, and 34 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>44 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, sphrak, Elelan, salimisler28, Mystery406, GabrielLasso, liukaigsx, Macdotexe, rd-yan-farba, tlarcher-gpsw, and TaoMY2399967884 reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>11 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">133 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-b7df9795"> <h2 class="sr-only" id="hd-b7df9795">Kotlin 2.0.20-RC2</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-08-13T12:18:31Z"> 13 Aug 12:18 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.0.20-RC2" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.0.20-RC2 </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/68f075d25ed33bf1d3a5820a961f1e9ca9d8d433/hovercard" href="/JetBrains/kotlin/commit/68f075d25ed33bf1d3a5820a961f1e9ca9d8d433" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">68f075d</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-971287c4-af05-11ef-821d-767b2c49b5c9"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-971287c4-af05-11ef-821d-767b2c49b5c9"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMC4yMC1SQzI=" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.0.20-RC2" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.0.20-RC2" data-view-component="true" class="Link--primary Link">Kotlin 2.0.20-RC2</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>Changelog</h2> <h3>Backend. Wasm</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70591" rel="nofollow"><code>KT-70591</code></a> To much sources that don't exist inside SourceMap file</li> </ul> <h3>Compiler</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70186" rel="nofollow"><code>KT-70186</code></a> Kotlin 2.0.20-Beta2: Unexpected number of type arguments: 0</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69835" rel="nofollow"><code>KT-69835</code></a> K2 / Native: kotlin.native.binary.gc=cms throws library cached but its dependency isn't error</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70417" rel="nofollow"><code>KT-70417</code></a> DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE leads to NPE in BE</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69964" rel="nofollow"><code>KT-69964</code></a> K2: Returning from an in-place lambda doesn't compile</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69995" rel="nofollow"><code>KT-69995</code></a> K2: Slow compilation when star projecting mutually recursive bounds from java</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69773" rel="nofollow"><code>KT-69773</code></a> K2: "Overload resolution ambiguity between candidate" with arrays</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70238" rel="nofollow"><code>KT-70238</code></a> K2: false negative VOLATILE_ON_VALUE for constructor properties</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69766" rel="nofollow"><code>KT-69766</code></a> K2: False negative: Internal setter of generic class is accessible from another module</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69898" rel="nofollow"><code>KT-69898</code></a> K2: Performance degradation in fir2ir caused by changes around intersection types</li> </ul> <h3>Compose compiler</h3> <ul> <li><a href="https://issuetracker.google.com/issues/357878245" rel="nofollow"><code>b/357878245</code></a> Disallow open <code>@Composable</code> functions with default params to fix binary compatibility issues.</li> </ul> <h3>JavaScript</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70592" rel="nofollow"><code>KT-70592</code></a> "Error: HttpClientCall expected" on HTTP request when targeting es2015 with KTOR</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-67355" rel="nofollow"><code>KT-67355</code></a> KJS / ES6: 'super' in lambda with enabled <code>-Xir-generate-inline-anonymous-functions</code> leads to JS errors</li> </ul> <h3>Libraries</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70196" rel="nofollow"><code>KT-70196</code></a> Introduce ExperimentalUuidApi annotation for marking Uuid API</li> </ul> <h3>Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70166" rel="nofollow"><code>KT-70166</code></a> Native: EXC_BAD_ACCESS on watchOS when using Dispatchers</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69246" rel="nofollow"><code>KT-69246</code></a> K2: linkPodDebugFrameworkIosArm64 takes 15 (!!) times longer</li> </ul> <h3>Native. Runtime</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70043" rel="nofollow"><code>KT-70043</code></a> Native: EXC_BAD_ACCESS on watchOS when using Random</li> </ul> <h3>Tools. Compiler plugins. Serialization</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70516" rel="nofollow"><code>KT-70516</code></a> KxSerialization: <code>@KeepGeneratedSerializer</code> and sealed class cause initialization error</li> </ul> <h3>Tools. Gradle. JS</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70077" rel="nofollow"><code>KT-70077</code></a> [2.0.20-Beta2] KGP reports confusing warnings about js/wasmJS source sets</li> </ul> <h3>Tools. Wasm</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-70220" rel="nofollow"><code>KT-70220</code></a> K/Wasm: Upgrade NPM dependencies</li> </ul></div> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.0.20-RC2" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="3B9YuKP91a_G0WMLaf_dfCA1q7e1vLw3VerJ4behQWb5hMtyndekM65OJ-zFIriMv7CU7BHy5GfC7cUatYEkOw" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4KIQ5R"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-f7059e" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (23): KotlinBuild, 01:12PM on August 09" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">23</span> </button> <tool-tip id="tooltip-5f75ee61-35d9-4e3f-9af3-eb9982afcb0b" for="reactions--reaction_button_component-f7059e" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sphrak, salimisler28, NicosNicolaou16, Berrones-Edwin, thiagogebrimm, tolik518, TheWylot, pablichjenkov, Quillraven, ShiinaKin, and 13 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-ac5c88" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (6): KotlinBuild, 01:12PM on August 09" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">6</span> </button> <tool-tip id="tooltip-80a436c6-47d5-4419-a9e5-f6989e352a2f" for="reactions--reaction_button_component-ac5c88" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sphrak, salimisler28, pablichjenkov, YektaDev, IsakTheHacker, and Nossir-blue reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-88aa04" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (9): KotlinBuild, 01:12PM on August 09" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">9</span> </button> <tool-tip id="tooltip-5b422518-fb16-401c-b278-b69e85338281" for="reactions--reaction_button_component-88aa04" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sphrak, spamegg1, salimisler28, pablichjenkov, Junzz0, balao7, YektaDev, IsakTheHacker, and ParaskP7 reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-56a1e8" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (19): KotlinBuild, 01:12PM on August 09" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">19</span> </button> <tool-tip id="tooltip-c69718b6-bb8d-44ac-bf79-71270405b549" for="reactions--reaction_button_component-56a1e8" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">Vivecstel, GourdErwa, Javernaut, alibagherifam, Elelan, ritesh-singh, MessiasLima, alittlekitten, StijnDRZP, xinshou-tw, and 9 more reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-aabc2c" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (21): KotlinBuild, 01:12PM on August 09" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">21</span> </button> <tool-tip id="tooltip-4ee2009e-4623-47fe-9a52-4340146aa48b" for="reactions--reaction_button_component-aabc2c" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">lppedd, alibagherifam, Elelan, Kilemonn, ritesh-singh, sureshg, StijnDRZP, lauzadis, omarjatoi, sphrak, and 11 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-aaabf1" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (7): KotlinBuild, 01:12PM on August 09" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">7</span> </button> <tool-tip id="tooltip-be5a5183-0e32-4ffd-ae83-7afe40d387e1" for="reactions--reaction_button_component-aaabf1" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">sphrak, salimisler28, pablichjenkov, YektaDev, IsakTheHacker, LucasAlfare, and tlarcher-gpsw reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="sphrak, salimisler28, NicosNicolaou16, Berrones-Edwin, thiagogebrimm, tolik518, TheWylot, pablichjenkov, Quillraven, ShiinaKin, and 13 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>23 reactions</span> </li> <li class="dropdown-item" aria-label="sphrak, salimisler28, pablichjenkov, YektaDev, IsakTheHacker, and Nossir-blue reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>6 reactions</span> </li> <li class="dropdown-item" aria-label="sphrak, spamegg1, salimisler28, pablichjenkov, Junzz0, balao7, YektaDev, IsakTheHacker, and ParaskP7 reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>9 reactions</span> </li> <li class="dropdown-item" aria-label="Vivecstel, GourdErwa, Javernaut, alibagherifam, Elelan, ritesh-singh, MessiasLima, alittlekitten, StijnDRZP, xinshou-tw, and 9 more reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>19 reactions</span> </li> <li class="dropdown-item" aria-label="lppedd, alibagherifam, Elelan, Kilemonn, ritesh-singh, sureshg, StijnDRZP, lauzadis, omarjatoi, sphrak, and 11 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>21 reactions</span> </li> <li class="dropdown-item" aria-label="sphrak, salimisler28, pablichjenkov, YektaDev, IsakTheHacker, LucasAlfare, and tlarcher-gpsw reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>7 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">50 people reacted</div> </div> </div> </div> </div></div> </div> </section> <section aria-labelledby="hd-8e810055"> <h2 class="sr-only" id="hd-8e810055">Kotlin 2.0.20-RC</h2> <div class="d-flex flex-column flex-md-row my-5 flex-justify-center"> <div class="col-md-2 d-flex flex-md-column flex-row flex-wrap pr-md-6 mb-2 mb-md-0 flex-items-start pt-md-4"> <div class="mb-2 f4 mr-3 mr-md-0 col-12 pt-1 pt-sm-0"> <relative-time class="no-wrap" prefix="" datetime="2024-07-30T09:57:07Z"> 30 Jul 09:57 </relative-time> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <img src="https://avatars.githubusercontent.com/u/11723187?s=40&v=4" alt="@KotlinBuild" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <a class="color-fg-muted wb-break-all" data-hovercard-type="user" data-hovercard-url="/users/KotlinBuild/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/KotlinBuild">KotlinBuild</a> </div> <div class="mr-3 mr-md-0 d-flex pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/JetBrains/kotlin/tree/v2.0.20-RC" data-view-component="true" class="Link Link--muted"> <div data-view-component="true" class="css-truncate css-truncate-target"> <svg aria-label="Tag" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="ml-1 wb-break-all"> v2.0.20-RC </span> </div></a> </div> <div style="position: relative; top: 1px;" class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a data-hovercard-type="commit" data-hovercard-url="/JetBrains/kotlin/commit/dd44c8e7b455e1e41286aefc155c095cbb23a12d/hovercard" href="/JetBrains/kotlin/commit/dd44c8e7b455e1e41286aefc155c095cbb23a12d" data-view-component="true" class="Link Link--muted mb-2"> <svg aria-label="Commit" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-commit"> <path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path> </svg> <code class="f5 ml-1 wb-break-all">dd44c8e</code></a> </div> <div class="mb-md-2 mr-3 mr-md-0 pt-1 pt-sm-0"> <details class="details-reset details-overlay " id="tag-select-menu-971540e0-af05-11ef-91f4-1de3edf1b862"> <summary data-view-component="true" class="btn-sm btn text-left"> <i></i><span data-menu-button="">Compare</span><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down ml-2 mr-n1"> <path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path> </svg> </summary> <details-menu class="SelectMenu text-md-left " style="z-index: 500"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Choose a tag to compare</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="tag-select-menu-971540e0-af05-11ef-91f4-1de3edf1b862"> <svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> </header> <div class="SelectMenu-filter"> <input aria-label="Find a tag" autofocus class="SelectMenu-input form-control" data-ref-filter placeholder="Find a tag" type="text" > </div> <ref-selector type="tag" query-endpoint="/JetBrains/kotlin/refs" cache-key="v0:1732929924.0" current-committish="djIuMC4yMC1SQw==" default-branch="bWFzdGVy" name-with-owner="SmV0QnJhaW5zL2tvdGxpbg==" prefetch-on-mouseover > <template data-target="ref-selector.fetchFailedTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div> </template> <template data-target="ref-selector.noMatchTemplate"> <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div> </template> <template data-target="ref-selector.itemTemplate"> <a href="/JetBrains/kotlin/compare/{{ urlEncodedRefName }}...v2.0.20-RC" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span> <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span> </a> </template> <template data-target="ref-selector.hiddenCurrentItemTemplate"> <input hidden="hidden" type="radio" value="{{ refName }}" checked="checked" name="" id="" /> </template> <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px"> <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden"> <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </div> </div> <footer class="SelectMenu-footer"><a href="/JetBrains/kotlin/tags">View all tags</a></footer> </ref-selector> </div> </details-menu> </details> </div> </div> <div class="col-md-9" > <div data-view-component="true" class="Box"> <div data-view-component="true" class="Box-body"> <div class="d-flex flex-md-row flex-column"> <div class="d-flex flex-row flex-1 mb-3 wb-break-word"> <div class="flex-1" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <span data-view-component="true" class="f1 text-bold d-inline mr-3"><a href="/JetBrains/kotlin/releases/tag/v2.0.20-RC" data-view-component="true" class="Link--primary Link">Kotlin 2.0.20-RC</a></span> <span> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom d-none d-md-inline-block">Pre-release</span> <div class="ml-2 d-none d-md-inline"> </div> </span> </div> <div class="mt-3 ml-2 d-md-none"> <span data-view-component="true" class="Label Label--warning Label--large v-align-text-bottom">Pre-release</span> </div> <div class="ml-2 mt-3 d-md-none"> </div> </div> <div class="d-flex mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> </div> </div> <div data-pjax="true" data-test-selector="body-content" data-view-component="true" class="markdown-body my-3"><h2>2.0.20-RC</h2> <h3>Analysis. API</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69630" rel="nofollow"><code>KT-69630</code></a> KAPT User project builds with KAPT4 enabled fail with Metaspace overflow</li> </ul> <h3>Backend. Wasm</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69876" rel="nofollow"><code>KT-69876</code></a> K2 Compile exception: Only IrBlockBody together with kotlinx serialization</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69529" rel="nofollow"><code>KT-69529</code></a> compileProductionExecutableKotlinWasmJs FAILED: No such value argument slot in IrConstructorCallImpl: 1 (total=1)</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68088" rel="nofollow"><code>KT-68088</code></a> Wasm: "UNREACHABLE executed at Precompute.cpp:838" running gradle task wasmJsBrowserDistribution for compose multiplatform on Windows</li> </ul> <h3>Compiler</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69494" rel="nofollow"><code>KT-69494</code></a> StackOverflowError in CfgTraverserKt.getPreviousCfgNodes</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69723" rel="nofollow"><code>KT-69723</code></a> K2: code analysis taking too long</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-56880" rel="nofollow"><code>KT-56880</code></a> K2. Conflicting overloads for main() isn't shown when language version is set to 2.0</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69170" rel="nofollow"><code>KT-69170</code></a> K2: "Unresolved reference" caused by generics and fun interfaces</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-70039" rel="nofollow"><code>KT-70039</code></a> K2: inconsistent stability of vals of captured receivers</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68996" rel="nofollow"><code>KT-68996</code></a> K2: "Not enough information to infer type argument" caused by typealias annotation with fixed generic argument</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68889" rel="nofollow"><code>KT-68889</code></a> K2: type variable should not be fixed</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-15388" rel="nofollow"><code>KT-15388</code></a> Forbid delegated property to have external getter/setter</li> </ul> <h3>Compose compiler</h3> <ul> <li><a href="https://issuetracker.google.com/issues/351858979" rel="nofollow"><code>b/351858979</code></a> Fix stability inferencing of interfaces on incremental compilation</li> <li><a href="https://issuetracker.google.com/issues/346821372" rel="nofollow"><code>b/346821372</code></a> [Compose] Fix code generation for group optimization</li> </ul> <h3>JavaScript</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69353" rel="nofollow"><code>KT-69353</code></a> KJS / d.ts: Kotlin does not export base collection classes along with their mutable collection counterparts</li> </ul> <h3>Libraries</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-68025" rel="nofollow"><code>KT-68025</code></a> Improve documentation for Hex</li> </ul> <h3>Native. Build Infrastructure</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69781" rel="nofollow"><code>KT-69781</code></a> Kotlin/Native performance tests fail to compile with bitcode</li> </ul> <h3>Native. C and ObjC Import</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69094" rel="nofollow"><code>KT-69094</code></a> LLVM 11 clang: cinterops fail with "_Float16 is not supported on this target"</li> </ul> <h3>Native. Platform Libraries</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69382" rel="nofollow"><code>KT-69382</code></a> LLVM 11 clang: symbol not found when running the linker</li> </ul> <h3>Native. Runtime</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-68928" rel="nofollow"><code>KT-68928</code></a> EXC_BREAKPOINT: BUG IN CLIENT OF LIBPLATFORM: Trying to recursively lock an os_unfair_lock</li> </ul> <h3>Tools. CLI</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69792" rel="nofollow"><code>KT-69792</code></a> Add the possibility to disable fast jar fs in K2</li> </ul> <h3>Tools. Gradle</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69809" rel="nofollow"><code>KT-69809</code></a> Compose Gradle Plugin: AGP doesn't override configuration properties like traceMarkersEnabled</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-68843" rel="nofollow"><code>KT-68843</code></a> Gradle: Kotlin plugin changes source set 'main' to 'null/main'</li> <li><a href="https://youtrack.jetbrains.com/issue/KT-69837" rel="nofollow"><code>KT-69837</code></a> Deprecation warning for file-based IC is issued when the property is set to true, altering the intended meaning of the message</li> </ul> <h3>Tools. Gradle. JS</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69805" rel="nofollow"><code>KT-69805</code></a> YarnSetupTask does not work for custom downloadBaseUrl</li> </ul> <h3>Tools. Gradle. Multiplatform</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69311" rel="nofollow"><code>KT-69311</code></a> runDebugExecutable task fails with "this.compilation" is null with enabled configuration cache</li> </ul> <h3>Tools. Gradle. Native</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69918" rel="nofollow"><code>KT-69918</code></a> java.lang.NullPointerException: Cannot invoke "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation.getTarget()" because "this.compilation" is null</li> </ul> <h3>Tools. Incremental Compile</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69042" rel="nofollow"><code>KT-69042</code></a> K2: changing a Java constant won't cause Kotlin usages to recompile</li> </ul> <h3>Tools. JPS</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KT-69204" rel="nofollow"><code>KT-69204</code></a> Generate lookups in dumb mode for compatibility with ref index</li> </ul></div> </div> <div data-view-component="true" class="Box-footer"> <div class="mb-3"> <details data-view-component="true"> <summary role="button" data-view-component="true"> <span data-view-component="true" class="f3 text-bold d-inline mr-3">Assets</span> <span title="18" data-view-component="true" class="Counter ml-1">18</span> </summary> <div data-view-component="true"> <include-fragment loading="lazy" src="https://github.com/JetBrains/kotlin/releases/expanded_assets/v2.0.20-RC" > <span data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </include-fragment> </div> </details> </div> <div class="d-flex flex-row flex-wrap flex-justify-between js-comment"> <div data-view-component="true" class="comment-reactions js-reactions-container js-reaction-buttons-container social-reactions reactions-container has-reactions d-flex"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-pick-reaction" data-turbo="false" action="/JetBrains/kotlin/reactions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="qiS-jGPxDwh7Js8Ag5fn5JX9WNVtBVegaXGADSbC4SuPvy1GXdt-lBO5i-cvSoIUCnhnjslLD_D-doz2JOKEdg" autocomplete="off" /> <input type="hidden" name="input[subjectId]" value="RE_kwDOADRfSs4KAFUc"> <div class="js-comment-reactions-options d-flex flex-items-center flex-row flex-wrap"> <button name="input[content]" id="reactions--reaction_button_component-07c7fb" value="THUMBS_UP react" data-button-index-position="0" data-reaction-label="+1" data-reaction-content="+1" aria-pressed="false" aria-label="thumbs up (30): KotlinBuild, 10:07AM on July 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji">👍</g-emoji> <span class="js-discussion-reaction-group-count">30</span> </button> <tool-tip id="tooltip-57e6110a-27c8-4b82-b441-d46a0949d21a" for="reactions--reaction_button_component-07c7fb" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">ltttttttttttt, mak1nt0sh, itsandreramon, atuy1219, YektaDev, SidharthArya, Nek-12, salimisler28, NicosNicolaou16, Lavmee, and 20 more reacted with thumbs up emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-1b485c" value="LAUGH react" data-button-index-position="2" data-reaction-label="Laugh" data-reaction-content="smile" aria-pressed="false" aria-label="laugh (5): KotlinBuild, 10:07AM on July 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji">😄</g-emoji> <span class="js-discussion-reaction-group-count">5</span> </button> <tool-tip id="tooltip-78f161f8-b167-46bb-94c2-c81018f3e34a" for="reactions--reaction_button_component-1b485c" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, salimisler28, sphrak, IsakTheHacker, and jesperancinha reacted with laugh emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-1a0271" value="HOORAY react" data-button-index-position="3" data-reaction-label="Hooray" data-reaction-content="tada" aria-pressed="false" aria-label="hooray (12): KotlinBuild, 10:07AM on July 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji">🎉</g-emoji> <span class="js-discussion-reaction-group-count">12</span> </button> <tool-tip id="tooltip-38341716-6340-45f2-9ad5-63eda1ae8cea" for="reactions--reaction_button_component-1a0271" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, salimisler28, sphrak, pull-vert, vinceglb, diegoberaldin, j0a0m4, IsakTheHacker, Junzz0, AliHabibiAndroidProgramPilot, and 2 more reacted with hooray emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-b9f154" value="HEART react" data-button-index-position="5" data-reaction-label="Heart" data-reaction-content="heart" aria-pressed="false" aria-label="heart (9): KotlinBuild, 10:07AM on July 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji">❤️</g-emoji> <span class="js-discussion-reaction-group-count">9</span> </button> <tool-tip id="tooltip-7cf115f8-1e17-42fb-80dc-ffffe22ff2d2" for="reactions--reaction_button_component-b9f154" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, salimisler28, sphrak, BRLunt, vinceglb, diegoberaldin, IsakTheHacker, lucas-de-lima, and myHerbDev reacted with heart emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-521306" value="ROCKET react" data-button-index-position="6" data-reaction-label="Rocket" data-reaction-content="rocket" aria-pressed="false" aria-label="rocket (12): KotlinBuild, 10:07AM on July 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji">🚀</g-emoji> <span class="js-discussion-reaction-group-count">12</span> </button> <tool-tip id="tooltip-6c330075-e1cb-4880-8e15-4e5c523df185" for="reactions--reaction_button_component-521306" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">seljabali, YektaDev, sureshg, salimisler28, sphrak, Kilemonn, vinceglb, diegoberaldin, j0a0m4, IsakTheHacker, and 2 more reacted with rocket emoji</tool-tip> <button name="input[content]" id="reactions--reaction_button_component-8a5c78" value="EYES react" data-button-index-position="7" data-reaction-label="Eyes" data-reaction-content="eyes" aria-pressed="false" aria-label="eyes (6): KotlinBuild, 10:07AM on July 26" type="submit" disabled="disabled" data-view-component="true" class="social-reaction-summary-item js-reaction-group-button btn-link d-flex no-underline color-fg-muted flex-items-baseline mr-2"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji">👀</g-emoji> <span class="js-discussion-reaction-group-count">6</span> </button> <tool-tip id="tooltip-655539c5-c231-4f5d-b251-db9a0517366a" for="reactions--reaction_button_component-8a5c78" popover="manual" data-direction="n" data-type="description" data-view-component="true" class="sr-only position-absolute">YektaDev, salimisler28, sphrak, diegoberaldin, IsakTheHacker, and Smekalisty reacted with eyes emoji</tool-tip> <div class="js-reactions-container"> <details class="dropdown details-reset details-overlay d-inline-block js-all-reactions-popover" hidden> <summary aria-haspopup="true" data-view-component="true" class="Button--link Button--medium Button"> <span class="Button-content"> <span class="Button-label">All reactions</span> </span> </summary> <ul class="dropdown-menu dropdown-menu-se"> <li class="dropdown-item" aria-label="ltttttttttttt, mak1nt0sh, itsandreramon, atuy1219, YektaDev, SidharthArya, Nek-12, salimisler28, NicosNicolaou16, Lavmee, and 20 more reacted with thumbs up emoji"> <g-emoji alias="+1" fallback-src="https://github.githubassets.com/assets/1f44d-41cb66fe1e22.png" class="social-button-emoji mr-2">👍</g-emoji> <span>30 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, salimisler28, sphrak, IsakTheHacker, and jesperancinha reacted with laugh emoji"> <g-emoji alias="smile" fallback-src="https://github.githubassets.com/assets/1f604-7528822fb4c5.png" class="social-button-emoji mr-2">😄</g-emoji> <span>5 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, salimisler28, sphrak, pull-vert, vinceglb, diegoberaldin, j0a0m4, IsakTheHacker, Junzz0, AliHabibiAndroidProgramPilot, and 2 more reacted with hooray emoji"> <g-emoji alias="tada" fallback-src="https://github.githubassets.com/assets/1f389-36899a2cb781.png" class="social-button-emoji mr-2">🎉</g-emoji> <span>12 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, salimisler28, sphrak, BRLunt, vinceglb, diegoberaldin, IsakTheHacker, lucas-de-lima, and myHerbDev reacted with heart emoji"> <g-emoji alias="heart" fallback-src="https://github.githubassets.com/assets/2764-982dc91ea48a.png" class="social-button-emoji mr-2">❤️</g-emoji> <span>9 reactions</span> </li> <li class="dropdown-item" aria-label="seljabali, YektaDev, sureshg, salimisler28, sphrak, Kilemonn, vinceglb, diegoberaldin, j0a0m4, IsakTheHacker, and 2 more reacted with rocket emoji"> <g-emoji alias="rocket" fallback-src="https://github.githubassets.com/assets/1f680-d0ef47fdb515.png" class="social-button-emoji mr-2">🚀</g-emoji> <span>12 reactions</span> </li> <li class="dropdown-item" aria-label="YektaDev, salimisler28, sphrak, diegoberaldin, IsakTheHacker, and Smekalisty reacted with eyes emoji"> <g-emoji alias="eyes" fallback-src="https://github.githubassets.com/assets/1f440-ee44e91e92a7.png" class="social-button-emoji mr-2">👀</g-emoji> <span>6 reactions</span> </li> </ul> </details> </div> </div> </form> <div data-view-component="true" class="color-fg-muted mt-1">41 people reacted</div> </div> </div> </div> </div></div> </div> </section> <div class="paginate-container d-none d-sm-flex flex-sm-justify-center" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <div role="navigation" aria-label="Pagination" class="pagination"><span class="previous_page disabled" aria-label="Previous page">Previous</span> <em class="current" aria-label="Page 1" aria-current="page">1</em> <a rel="next" aria-label="Page 2" href="/JetBrains/kotlin/releases?page=2">2</a> <a aria-label="Page 3" href="/JetBrains/kotlin/releases?page=3">3</a> <a aria-label="Page 4" href="/JetBrains/kotlin/releases?page=4">4</a> <a aria-label="Page 5" href="/JetBrains/kotlin/releases?page=5">5</a> <span class="gap">…</span> <a aria-label="Page 24" href="/JetBrains/kotlin/releases?page=24">24</a> <a aria-label="Page 25" href="/JetBrains/kotlin/releases?page=25">25</a> <a class="next_page" aria-label="Next page" rel="next" href="/JetBrains/kotlin/releases?page=2">Next</a></div> </div> <div class="paginate-container d-sm-none mb-5" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <div role="navigation" aria-label="Pagination" class="pagination"><span class="previous_page disabled" aria-label="Previous page">Previous</span> <a class="next_page" aria-label="Next page" rel="next" href="/JetBrains/kotlin/releases?page=2">Next</a></div> </div> </div> </div> </div> </turbo-frame> </main> </div> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <span> © 2024 GitHub, Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>