CINXE.COM

History for NEWS.md - JuliaLang/julia · 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-74231a1f3bbb.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-8a995f0bacd4.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f37fb7684b1f.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-9ac301c3ebe5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-cd826e8636dc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f91b0f603451.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-83beb16e0ecf.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6e122dab64fc.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-18119e682df0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-aaa714e5674d.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-0a3c53b9d1c2.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ea73c9cb5377.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-4fce88777fa8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-0210be90f4d3.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_immersive_issue_preview","copilot_new_references_ui","copilot_chat_repo_custom_instructions_preview","copilot_no_floating_button","copilot_topics_as_references","copilot_read_shared_conversation","copilot_duplicate_thread","copilot_buffered_streaming","dotcom_chat_client_side_skills","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_gateway_parse_params","github_models_o3_mini_streaming","insert_before_patch","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","primer_react_css_modules_ga","react_data_router_pull_requests","react_override_default_key","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_proxima_australia_update","viewscreen_sandbox","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates","copilot_task_oriented_assistive_prompts","issue_types_prevent_private_type_creation","refresh_image_video_src","react_router_dispose_on_disconnect","codespaces_prebuild_region_target_update","turbo_app_id_restore","copilot_code_review_sign_up_closed"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-a05c883d32f9.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-9da652f58479.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-3abb8f-46b9f4874d95.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-75968cfb5298.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.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-0dbb79f97f8f.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-62d275b7ddd9.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-78748950cb0c.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_-8e9f78-a90ac05d2469.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-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.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-c44a69-efa32db3a345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-394f8eb34f19.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-25113a65b77f.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-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.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-a4a1922eb55f.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-a03ee12d659a.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-b6294cf703b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.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_-947061-e7a6c4a19f98.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eb3147a21e96.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-768abe60b1f8.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-3e000c5d31a9.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-87a4ae-4c160a67a3f8.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-e429cff6ceb1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-124f4ce2c2c0.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-01e85cd1be94.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-94dc7a2157c1.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-3eebbd-0763620ad7bf.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-e161aa-9d41fb1b6c9e.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_remote--3c9c82-b71ef90fbdc7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-3e9d848bab5f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-e6e7c7ff47a3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-602097a4b0db.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-0bc17999cb79.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-f1bca44e0926.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-cf2f2ab8dab4.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-62da9f-2df2f32ec596.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-9a233856b02c.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-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_es_mjs-dd1d3ea6a436.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__Stack_js-node_modules_lodash-es__Uint8Array_js-node_modules_l-4faaa6-4a736fde5c2f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_date-fns_format_mjs-6e4d0f904632.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryObserver_js-node_modules_tanstack_-defd52-843b41414e0e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_date-fns_addWeeks_mjs-node_modules_date-fns_addYears_mjs-node_modules_da-827f4f-cf37cd06c24f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-relay_index_js-2d54b665e445.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_focus-visible_dist_focus-visible_js-node_modules_fzy_js_index_js-node_mo-c4d1d6-73cf7c06cba8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hotkey_dist_index_js-node_modules_date-fns_getDaysInMonth_mjs-nod-70c11b-75afe0f5c344.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__baseIsEqual_js-8929eb9718d5.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-24c074-57709bcf92f3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-relay_hooks_js-node_modules_color2k_dist_index_exports_import_es_m-e8b6bb-d8ead802a1fd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-intersection-observer_react-intersection-observer_modern_mjs-node_-b27033-ba82cef135e3.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_hydro-analytics-101cf2-4c1b18455d2a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_history_history_ts-ui_packages_promise-with-re-01dc80-134579ff449f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-3adbcf6faa83.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-2ea4e93613c0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_list-view_src_ListView_ListView_tsx-ui_packages_safe-html_SafeHTML_tsx-51c336a0c9f4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_list-view_src_ListItem_ListItem_tsx-ui_packages_list-view_src_ListItem_Title_tsx-e9e6a7840430.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_date-picker_date-picker_ts-ui_packages_github-avatar_GitHubAvatar_tsx-df9548397fca.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_item-picker_constants_labels_ts-ui_packages_item-picker_constants_values_ts-ui_pa-163a9a-3cb92bf7c1be.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_item-picker_components_RepositoryPicker_tsx-3840f58896cc.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_comment-box_api_file-upload_ts-ui_packages_comment-box_api_preview_ts-ui_packages-2c5e84-c2b4b77f6b48.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-7496afc3784d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_issue-create_dialog_CreateIssueDialogEntry_tsx-87bf510a676b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_signed-commit-badge_index_ts-ui_packages_use-navigate_use-navigate_ts-4dd0e0e5bd5d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_utilities_web-worker_ts-ui_packages_diff-file-header_diff-file-h-1692d0-2e02b5973da2.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_commit-attribution_index_ts-ui_packages_commit-checks-status_index_ts-ui_packages-7094d4-b869a469ca5e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/commits-c04e973daaf4.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8157a56b30ae88a1b356.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/commits.1c794516eca07a4b0dcb.module.css" /> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-57956eade845.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8157a56b30ae88a1b356.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>History for NEWS.md - JuliaLang/julia · GitHub</title> <meta name="route-pattern" content="/:user_id/:repository/commits(/*name)" data-turbo-transient> <meta name="route-controller" content="commits" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> <meta name="request-id" content="9550:3CE811:2B77D2:31ECFE:67EBE716" data-pjax-transient="true"/><meta name="html-safe-nonce" content="3568bdcaca2d8aa3fa6303f17c95b12173560798727a4e9058878131dd1e2b9f" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NTUwOjNDRTgxMToyQjc3RDI6MzFFQ0ZFOjY3RUJFNzE2IiwidmlzaXRvcl9pZCI6IjgyNjM3MTMxNzAyNzQzNzk1NDIiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="f39d41e33181ec0e86acfb74315e2773f3d9c03eb2b34cfdfdb87c26e0d16df5" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:1644196" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,commit-list,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/JuliaLang/julia/commits/master/NEWS.md" 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="/&lt;user-name&gt;/&lt;repo-name&gt;/commits/show" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="The Julia Programming Language. Contribute to JuliaLang/julia 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/JuliaLang/julia/commits/master/NEWS.md" /> <meta name="twitter:image" content="https://repository-images.githubusercontent.com/1644196/ddfc1e00-6638-11e9-9b80-0fe7b9aedd72" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="History for NEWS.md - JuliaLang/julia" /><meta name="twitter:description" content="The Julia Programming Language. Contribute to JuliaLang/julia development by creating an account on GitHub." /> <meta property="og:image" content="https://repository-images.githubusercontent.com/1644196/ddfc1e00-6638-11e9-9b80-0fe7b9aedd72" /><meta property="og:image:alt" content="The Julia Programming Language. Contribute to JuliaLang/julia 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="History for NEWS.md - JuliaLang/julia" /><meta property="og:url" content="https://github.com/JuliaLang/julia" /><meta property="og:description" content="The Julia Programming Language. Contribute to JuliaLang/julia 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="ce3daf97e8d99e74294e5992d4d61ba885e5722e00e3d3ccf57fe176158751d2" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="e26f9f0ba624ee85cc7ac057d8faa8618a4f25a85eab052c33d018ac0f6b1a46" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="159e03504eed5183f9787c72780a7d8c1460af30746ab09d728b048c41719efa" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="242e065aec432bdaf96efecc2301783ca2b1af8421b97829999907d8f1c90c56" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-cache-control" content="no-cache" data-turbo-transient> <meta name="go-import" content="github.com/JuliaLang/julia git https://github.com/JuliaLang/julia.git"> <meta name="octolytics-dimension-user_id" content="743164" /><meta name="octolytics-dimension-user_login" content="JuliaLang" /><meta name="octolytics-dimension-repository_id" content="1644196" /><meta name="octolytics-dimension-repository_nwo" content="JuliaLang/julia" /><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="1644196" /><meta name="octolytics-dimension-repository_network_root_nwo" content="JuliaLang/julia" /> <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"> <meta name="release" content="85a1a8f0595fde008b33c23b769a01c024a21704"> <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/keyboard-shortcuts-dialog-79d6a754ebf9.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8157a56b30ae88a1b356.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-4898d1bf4b51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-730dca81d0a2.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="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}"> <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 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FJuliaLang%2Fjulia%2Fcommits%2Fmaster%2FNEWS.md" 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="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/JuliaLang/julia/commits/master/NEWS.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08ab1d120f8c108d99c71815b2819b21d340416c3df0aa2795cbeafc978793f6" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;actions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;actions_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;codespaces&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;codespaces_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;issues&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;issues_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_review&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_review_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;discussions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;discussions_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_search&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_search_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;all_features&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;all_features_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;documentation&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;documentation_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_skills&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_skills_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;blog_link_product_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprises&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;startups&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;nonprofits&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}" href="/solutions/industry/nonprofits"> Nonprofits </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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devsecops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ci_cd&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ci_cd_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;healthcare&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;financial_services&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;manufacturing&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;government&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_industries&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;software_development&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;learning_pathways&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;learning_pathways_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;events_amp_webinars&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;events_amp_webinars_link_resources_navbar&quot;}" href="https://resources.github.com"> Events &amp; 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ebooks_amp_whitepapers&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ebooks_amp_whitepapers_link_resources_navbar&quot;}" href="https://github.com/resources/whitepapers"> Ebooks &amp; Whitepapers </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}" 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> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;executive_insights&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;executive_insights_link_resources_navbar&quot;}" href="https://github.com/solutions/executive-insights"> Executive Insights </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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_sponsors&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;the_readme_project&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;the_readme_project_link_open_source_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;topics&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;trending&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;collections&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;advanced_security&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;advanced_security_link_enterprise_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}" href="/features/copilot/copilot-business"> <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">Copilot for business</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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;pricing_link_global_navbar&quot;}" 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:JuliaLang/julia" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="P9etS_hh7E2LGwYvh1QrlR36BZQJXQaJF5UxggRPzb4rnDB4kqvufZU8OJznEBFD-I4DBfePfR8AukoE5HBkRg" 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="JuliaLang/julia" data-current-org="JuliaLang" 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="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}" 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-0555d818-ed9a-4c0f-b668-70660c67b1b1" 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-0555d818-ed9a-4c0f-b668-70660c67b1b1" 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="d80QfmCjeC13wFkWuIbRqMqX/f6c2mMhYV6URog5Hgil5x9XaIXUodzEeThEzF1Y8/6WOqjsu42dNp+GtAeJDg==" /> <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="pEVm/NPGlIPvsSfDBTAGDq4yi0e+opcYJJOn3Ig7TAzsVjWMrKjY414f+A+kNPHgkyWYMHDpr9OVYU88bgNe+w==" /> <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 only-validate-on-blur="false"> <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="pv1RO9DVIFMH7wqWGzi00xOO9px4Jhe/ZxNb8XQrrE/VQumkz20ehfTprdwrz/WBBZiMiDHVrYYqI1MIUhKtag==" /> </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%2FJuliaLang%2Fjulia%2Fcommits%2Fmaster%2FNEWS.md" 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="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/JuliaLang/julia/commits/master/NEWS.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08ab1d120f8c108d99c71815b2819b21d340416c3df0aa2795cbeafc978793f6" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fcommits%2Fshow&amp;source=header-repo&amp;source_repo=JuliaLang%2Fjulia" 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="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/JuliaLang/julia/commits/master/NEWS.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08ab1d120f8c108d99c71815b2819b21d340416c3df0aa2795cbeafc978793f6" data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;/commits/show;ref_cta:Sign up;ref_loc:header logged out&quot;}" > 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-5b58af66-8aa6-4998-b4aa-32dea55c255e" aria-labelledby="tooltip-f97e027f-fe13-4da8-b2f4-22d709a4df1f" 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-f97e027f-fe13-4da8-b2f4-22d709a4df1f" for="icon-button-5b58af66-8aa6-4998-b4aa-32dea55c255e" 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 data-project-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/JuliaLang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/JuliaLang"> JuliaLang </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="/JuliaLang/julia">julia</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> <include-fragment src="/JuliaLang/julia/sponsor_button"></include-fragment> </li> <li> <a href="/login?return_to=%2FJuliaLang%2Fjulia" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/JuliaLang/julia/commits/master/NEWS.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="795fe6d06d1d92803f1d41448abba03f2af9df2168e143c392bb5beb0d265435" 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-71c97d71-1b2f-438f-91c4-9d2d6014c9c4" 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=%2FJuliaLang%2Fjulia" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:1644196,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/JuliaLang/julia/commits/master/NEWS.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="03246f4da26932f5790e217b2b0c9762d3621841e0f20d3349a651e6d7db7593" 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,560" data-view-component="true" class="Counter">5.6k</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FJuliaLang%2Fjulia" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:1644196,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/JuliaLang/julia/commits/master/NEWS.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="171365b4289b4f5f2c145b0f843010047f273e271d9f90ba83a545320f865bb7" 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="46700 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="46,700" data-view-component="true" class="Counter js-social-count">46.7k</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="/JuliaLang/julia" 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 /JuliaLang/julia" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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-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="issues-tab" href="/JuliaLang/julia/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /JuliaLang/julia/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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-issue-opened UnderlineNav-octicon d-none d-sm-inline"> <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> <span data-content="Issues">Issues</span> <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="4,018" data-view-component="true" class="Counter">4k</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/JuliaLang/julia/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /JuliaLang/julia/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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="1,010" data-view-component="true" class="Counter">1k</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab" href="/JuliaLang/julia/discussions" data-tab-item="i3discussions-tab" data-selected-links="repo_discussions /JuliaLang/julia/discussions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g g" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Discussions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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-comment-discussion UnderlineNav-octicon d-none d-sm-inline"> <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> <span data-content="Discussions">Discussions</span> <span id="discussions-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="actions-tab" href="/JuliaLang/julia/actions" data-tab-item="i4actions-tab" data-selected-links="repo_actions /JuliaLang/julia/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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="/JuliaLang/julia/security" data-tab-item="i5security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /JuliaLang/julia/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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="/JuliaLang/julia/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="/JuliaLang/julia/pulse" data-tab-item="i6insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /JuliaLang/julia/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" 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-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-button" popovertarget="action-menu-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-overlay" aria-controls="action-menu-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-list" aria-haspopup="true" aria-labelledby="tooltip-6a955050-089d-458e-a05f-5a238dc7fcc7" 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-6a955050-089d-458e-a05f-5a238dc7fcc7" for="action-menu-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-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 data-target="action-menu.overlay" id="action-menu-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-overlay" anchor="action-menu-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-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-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-button" id="action-menu-fd2d3c10-6230-4830-9ab7-91c3825c5b2b-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-1725a2d0-8f32-47de-844d-dab537cf07f1" href="/JuliaLang/julia" 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="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-b7fe5d93-585f-4469-acfc-dd2ac8b7543f" href="/JuliaLang/julia/issues" 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-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> </span> <span data-view-component="true" class="ActionListItem-label"> Issues </span> </a> </li> <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-ef6efae1-df30-488f-88e5-2a4e1d30615f" href="/JuliaLang/julia/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="i3discussions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-3d38f97d-409b-4b75-aee0-ddb2e565e568" href="/JuliaLang/julia/discussions" 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-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> </span> <span data-view-component="true" class="ActionListItem-label"> Discussions </span> </a> </li> <li hidden="hidden" data-menu-item="i4actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-7a5a7ada-4635-4e1e-9d61-74336631348d" href="/JuliaLang/julia/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="i5security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-20764401-f8fa-4a05-9055-313c7f040305" href="/JuliaLang/julia/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="i6insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-eef5017f-b35a-4e91-8de7-ae315c41e224" href="/JuliaLang/julia/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 " > <react-app app-name="commits" initial-path="/JuliaLang/julia/commits/master/NEWS.md" style="display: block; min-height: calc(100vh - 64px);" data-attempted-ssr="true" data-ssr="true" data-lazy="false" data-alternate="false" data-data-router-enabled="false" > <script type="application/json" data-target="react-app.embeddedData">{"payload":{"commitGroups":[{"title":"Apr 1, 2025","commits":[{"oid":"1a4e0943a7d15f9affce6efee1a853972feba42e","url":"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e","authoredDate":"2025-04-01T07:32:52.000+05:30","committedDate":"2025-04-01T07:32:52.000+05:30","shortMessage":"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)\n\nCurrently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\nhttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\nUnfortunately, such methods are borderline type-piracy, as noted in\nhttps://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e\"\u003eAdd\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)\n\nCurrently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\nhttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\nUnfortunately, such methods are borderline type-piracy, as noted in\nhttps://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e\"\u003eAbstractOneTo\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)\n\nCurrently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\nhttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\nUnfortunately, such methods are borderline type-piracy, as noted in\nhttps://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e\"\u003eand have\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)\n\nCurrently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\nhttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\nUnfortunately, such methods are borderline type-piracy, as noted in\nhttps://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e\"\u003eOneTo\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)\n\nCurrently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\nhttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\nUnfortunately, such methods are borderline type-piracy, as noted in\nhttps://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e\"\u003ebe its subtype (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2757925701\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56902\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56902/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56902\"\u003e#56902\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add `AbstractOneTo` and have `OneTo` be its subtype (#56902)\n\nCurrently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\nhttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\nUnfortunately, such methods are borderline type-piracy, as noted in\nhttps://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Currently, `Base` defines `similar` for `Base.OneTo`, with the\nunderstanding that offset axes will be handled elsewhere. However,\n`Base.OneTo` is just one possible one-based range, and there are others\nsuch as `StaticArrays.SOneTo` that exist in the ecosystem. `Base`\ndoesn't provide a method to handle a combination of different one-based\nranges in `similar`, which leaves the packages in an awkward position:\nthey need to define methods like\n```julia\nsimilar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape))\n```\nwhere `HeterogeneousShapeTuple` is defined as\n```julia\nTuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}}\n```\n\n\u003ca href=\"https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\"\u003ehttps://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146\u003c/a\u003e\nUnfortunately, such methods are borderline type-piracy, as noted in\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2177389872\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaArrays/StaticArrays.jl/issues/1248\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaArrays/StaticArrays.jl/issues/1248/hovercard\" href=\"https://github.com/JuliaArrays/StaticArrays.jl/issues/1248\"\u003eJuliaArrays/StaticArrays.jl#1248\u003c/a\u003e. In\nparticular, if the narrower `Base` method that handles `Union{Integer,\nOneTo}` is removed, then this method explicitly becomes pirating.\n\nA solution to this situation is to have `Base` handle all one-based\nranges, such that arbitrary combinations of one-based ranges hit\nfallback methods in `Base`. This PR is a first step in this direction.\nWe add the abstract type `AbstractOneTo`, and have `OneTo` be its\nsubtype. We also add methods to `similar` and `reshape` that accept\n`AbstractOneTo` arguments. This makes it unnecessary for packages to\ndispatch on awkward combinations of `Union{Integer, OneTo}` and custom\none-based axes, as the base implementation would handle such cases\nalready.\n\nThere may be other methods that accept an `AbstractOneTo` instead of a\n`OneTo`, but these may be addressed in separate PRs. Also, there may be\none-based ranges that can't subtype `AbstractOneTo`, and a full solution\nthat accepts such ranges as well needs to be implemented through a\ntrait. This may also be handled in a separate PR.\n\n---------\n\nCo-authored-by: Tim Holy \u0026lt;tim.holy@gmail.com\u0026gt;","authors":[{"login":"jishnub","displayName":"Jishnu Bhattacharya","avatarUrl":"https://avatars.githubusercontent.com/u/10461665?v=4","path":"/jishnub","isGitHub":false},{"login":"timholy","displayName":"Tim Holy","avatarUrl":"https://avatars.githubusercontent.com/u/1525481?v=4","path":"/timholy","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Mar 25, 2025","commits":[{"oid":"d934b032ea5bf63b353371ad285605128c735873","url":"/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873","authoredDate":"2025-03-25T14:04:45.000-05:00","committedDate":"2025-03-25T15:04:45.000-04:00","shortMessage":"Show evaluated test arguments from broadcast functions (#57839)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Show evaluated test arguments from broadcast functions (#57839)\n\nWhile working on #57825 I noticed that broadcasted functions were not\nwell supported by the `@test` macro and never showed the evaluated test\narguments. I've updated the stdlib to support this which required some\nlarge enough refactoring that it seemed best to make a separate PR for\nthis change. The changes include:\n\n- Avoid embedding function references into `Expr`. This made the code\nharder to reason aboue than it needed to be.\n- Breaking up `eval_test` into `eval_test_comparison` and\n`eval_test_function` due to changes to the functions arguments\n- Handle broadcast syntax for binary operators (e.g. `1 .== 1`) and\nfunction calls (e.g. `(==).(1, 1)`)\n- Create new `_escaped_call` function which abstracts escaping all of\nthe arguments for a function call. Doing this made it handling the\nspecial call syntax for broadcasting easier.\n- Perform a single pass on function arguments when escaping where\npreviously we did two passes.\n\nDepends on:\n- #57825\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873\"\u003eShow evaluated test arguments from broadcast functions (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2936342295\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57839\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57839/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57839\"\u003e#57839\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Show evaluated test arguments from broadcast functions (#57839)\n\nWhile working on #57825 I noticed that broadcasted functions were not\nwell supported by the `@test` macro and never showed the evaluated test\narguments. I've updated the stdlib to support this which required some\nlarge enough refactoring that it seemed best to make a separate PR for\nthis change. The changes include:\n\n- Avoid embedding function references into `Expr`. This made the code\nharder to reason aboue than it needed to be.\n- Breaking up `eval_test` into `eval_test_comparison` and\n`eval_test_function` due to changes to the functions arguments\n- Handle broadcast syntax for binary operators (e.g. `1 .== 1`) and\nfunction calls (e.g. `(==).(1, 1)`)\n- Create new `_escaped_call` function which abstracts escaping all of\nthe arguments for a function call. Doing this made it handling the\nspecial call syntax for broadcasting easier.\n- Perform a single pass on function arguments when escaping where\npreviously we did two passes.\n\nDepends on:\n- #57825\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873\"\u003e)\u003c/a\u003e","bodyMessageHtml":"While working on \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2929890551\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57825\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57825/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57825\"\u003e#57825\u003c/a\u003e I noticed that broadcasted functions were not\nwell supported by the `@test` macro and never showed the evaluated test\narguments. I've updated the stdlib to support this which required some\nlarge enough refactoring that it seemed best to make a separate PR for\nthis change. The changes include:\n\n- Avoid embedding function references into `Expr`. This made the code\nharder to reason aboue than it needed to be.\n- Breaking up `eval_test` into `eval_test_comparison` and\n`eval_test_function` due to changes to the functions arguments\n- Handle broadcast syntax for binary operators (e.g. `1 .== 1`) and\nfunction calls (e.g. `(==).(1, 1)`)\n- Create new `_escaped_call` function which abstracts escaping all of\nthe arguments for a function call. Doing this made it handling the\nspecial call syntax for broadcasting easier.\n- Perform a single pass on function arguments when escaping where\npreviously we did two passes.\n\nDepends on:\n- \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2929890551\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57825\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57825/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57825\"\u003e#57825\u003c/a\u003e","authors":[{"login":"omus","displayName":"Curtis Vogt","avatarUrl":"https://avatars.githubusercontent.com/u/1675958?v=4","path":"/omus","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Mar 19, 2025","commits":[{"oid":"be3221f697e4bdc5fcb5f0eb8b216442503d60f8","url":"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8","authoredDate":"2025-03-19T09:54:07.000-05:00","committedDate":"2025-03-19T09:54:07.000-05:00","shortMessage":"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)\n\nPart of the sorting iterables saga:\n#38328\n#46104\n#51977\n#52010\n#54494\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8\"\u003eSupport\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)\n\nPart of the sorting iterables saga:\n#38328\n#46104\n#51977\n#52010\n#54494\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8\"\u003esort(keys(::Dict))\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)\n\nPart of the sorting iterables saga:\n#38328\n#46104\n#51977\n#52010\n#54494\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8\"\u003eand\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)\n\nPart of the sorting iterables saga:\n#38328\n#46104\n#51977\n#52010\n#54494\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8\"\u003esort(values(::Dict))\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)\n\nPart of the sorting iterables saga:\n#38328\n#46104\n#51977\n#52010\n#54494\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8\"\u003e(\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2771576996\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56978\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56978/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56978\"\u003e#56978\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978)\n\nPart of the sorting iterables saga:\n#38328\n#46104\n#51977\n#52010\n#54494\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Part of the sorting iterables saga:\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"737885597\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/38328\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/38328/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/38328\"\u003e#38328\u003c/a\u003e\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1310029741\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/46104\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/46104/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/46104\"\u003e#46104\u003c/a\u003e\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1972465090\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/51977\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/51977/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/51977\"\u003e#51977\u003c/a\u003e\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1975902171\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/52010\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/52010/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/52010\"\u003e#52010\u003c/a\u003e\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2300742507\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/54494\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/54494/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/54494\"\u003e#54494\u003c/a\u003e\n\n---------\n\nCo-authored-by: Neven Sajko \u0026lt;4944410+nsajko@users.noreply.github.com\u0026gt;","authors":[{"login":"LilithHafner","displayName":"Lilith Orion Hafner","avatarUrl":"https://avatars.githubusercontent.com/u/60898866?v=4","path":"/LilithHafner","isGitHub":false},{"login":"nsajko","displayName":"Neven Sajko","avatarUrl":"https://avatars.githubusercontent.com/u/4944410?v=4","path":"/nsajko","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Mar 8, 2025","commits":[{"oid":"bbcdc0f6a619b2aefc4ed606e72b8963f2723333","url":"/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333","authoredDate":"2025-03-08T12:13:00.000-04:00","committedDate":"2025-03-08T17:13:00.000+01:00","shortMessage":"Change NEWS to 1.13 and move gcsafe note to HISTORY. (#57679)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Change NEWS to 1.13 and move gcsafe note to HISTORY. (#57679)\n\nI also added the PR number, which is not in the release-1.12 NEWS. Do\nthose changes typically get backported?\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333\"\u003eChange NEWS to 1.13 and move gcsafe note to HISTORY. (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2904111356\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57679\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57679/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57679\"\u003e#57679\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Change NEWS to 1.13 and move gcsafe note to HISTORY. (#57679)\n\nI also added the PR number, which is not in the release-1.12 NEWS. Do\nthose changes typically get backported?\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333\"\u003e)\u003c/a\u003e","bodyMessageHtml":"I also added the PR number, which is not in the release-1.12 NEWS. Do\nthose changes typically get backported?","authors":[{"login":"christiangnrd","displayName":"Christian Guinard","avatarUrl":"https://avatars.githubusercontent.com/u/28689358?v=4","path":"/christiangnrd","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Feb 15, 2025","commits":[{"oid":"85458a04f0eab6c70d9e9a5b575d67c46a65f991","url":"/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991","authoredDate":"2025-02-15T18:51:44.000+01:00","committedDate":"2025-02-15T17:51:44.000Z","shortMessage":"Allow for :foreigncall to transition to GC safe automatically (#49933)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title='Allow for :foreigncall to transition to GC safe automatically (#49933)\n\nThis has been bouncing around as a idea for a while.\r\nOne of the challenges around time-to-safepoint has been Julia code\r\nthat is calling libraries. \r\n\r\nSince foreign code will not include safepoints we see increased latency\r\nwhen one thread is running a foreign-call and another wants to trigger\r\nGC.\r\n\r\nThe open design question here is:\r\n- Do we expose this as an option the user must \"opt-in\", e.g. by using a\r\n keyword arg to `@ccall` or a specific calling-convetion.\r\n- Or do we turn this on for all ccall, except for Julia runtime calls.\r\n\r\nThere is relativly little code outside the Julia runtime that needs to\r\nbe \"GC unsafe\",\r\nexception are programs that directly use the Julia C-API. Incidentially\r\n`jl_adopt_thread`\r\nand `@cfunction`/`@ccallable` do the right thing and transition to \"GC\r\nunsafe\", regardless\r\nof what state the thread currently is in.\r\n\r\nI still need to figure out how to reliably detect Julia runtime calls,\r\nbut I think we can\r\nswitch all other calls to \"GC safe\". We should also consider\r\noptimizations that mark large\r\nregions of code without Julia runtime interactions as \"GC safe\" in\r\nparticular numeric\r\nfor-loops.\r\n\r\nCloses #57057\r\n\r\n---------\r\n\r\nCo-authored-by: Gabriel Baraldi \u0026lt;baraldigabriel@gmail.com\u0026gt;' class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991\"\u003eAllow for :foreigncall to transition to GC safe automatically (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1721085613\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/49933\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/49933/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/49933\"\u003e#49933\u003c/a\u003e\u003ca data-pjax=\"true\" title='Allow for :foreigncall to transition to GC safe automatically (#49933)\n\nThis has been bouncing around as a idea for a while.\r\nOne of the challenges around time-to-safepoint has been Julia code\r\nthat is calling libraries. \r\n\r\nSince foreign code will not include safepoints we see increased latency\r\nwhen one thread is running a foreign-call and another wants to trigger\r\nGC.\r\n\r\nThe open design question here is:\r\n- Do we expose this as an option the user must \"opt-in\", e.g. by using a\r\n keyword arg to `@ccall` or a specific calling-convetion.\r\n- Or do we turn this on for all ccall, except for Julia runtime calls.\r\n\r\nThere is relativly little code outside the Julia runtime that needs to\r\nbe \"GC unsafe\",\r\nexception are programs that directly use the Julia C-API. Incidentially\r\n`jl_adopt_thread`\r\nand `@cfunction`/`@ccallable` do the right thing and transition to \"GC\r\nunsafe\", regardless\r\nof what state the thread currently is in.\r\n\r\nI still need to figure out how to reliably detect Julia runtime calls,\r\nbut I think we can\r\nswitch all other calls to \"GC safe\". We should also consider\r\noptimizations that mark large\r\nregions of code without Julia runtime interactions as \"GC safe\" in\r\nparticular numeric\r\nfor-loops.\r\n\r\nCloses #57057\r\n\r\n---------\r\n\r\nCo-authored-by: Gabriel Baraldi \u0026lt;baraldigabriel@gmail.com\u0026gt;' class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991\"\u003e)\u003c/a\u003e","bodyMessageHtml":"This has been bouncing around as a idea for a while.\nOne of the challenges around time-to-safepoint has been Julia code\nthat is calling libraries. \n\nSince foreign code will not include safepoints we see increased latency\nwhen one thread is running a foreign-call and another wants to trigger\nGC.\n\nThe open design question here is:\n- Do we expose this as an option the user must \"opt-in\", e.g. by using a\n keyword arg to `@ccall` or a specific calling-convetion.\n- Or do we turn this on for all ccall, except for Julia runtime calls.\n\nThere is relativly little code outside the Julia runtime that needs to\nbe \"GC unsafe\",\nexception are programs that directly use the Julia C-API. Incidentially\n`jl_adopt_thread`\nand `@cfunction`/`@ccallable` do the right thing and transition to \"GC\nunsafe\", regardless\nof what state the thread currently is in.\n\nI still need to figure out how to reliably detect Julia runtime calls,\nbut I think we can\nswitch all other calls to \"GC safe\". We should also consider\noptimizations that mark large\nregions of code without Julia runtime interactions as \"GC safe\" in\nparticular numeric\nfor-loops.\n\n\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #57057.\"\u003eCloses\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2789705274\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57057\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/57057/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/57057\"\u003e#57057\u003c/a\u003e\n\n---------\n\nCo-authored-by: Gabriel Baraldi \u0026lt;baraldigabriel@gmail.com\u0026gt;","authors":[{"login":"vchuravy","displayName":"Valentin Churavy","avatarUrl":"https://avatars.githubusercontent.com/u/145258?v=4","path":"/vchuravy","isGitHub":false},{"login":"gbaraldi","displayName":"Gabriel Baraldi","avatarUrl":"https://avatars.githubusercontent.com/u/28694980?v=4","path":"/gbaraldi","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Feb 6, 2025","commits":[{"oid":"7621dc541a2f7b63441ffa797163e3ee01094368","url":"/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368","authoredDate":"2025-02-06T16:21:58.000+01:00","committedDate":"2025-02-06T16:21:58.000+01:00","shortMessage":"move NEWS to HISTORY (#57256)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"move NEWS to HISTORY (#57256)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368\"\u003emove NEWS to HISTORY (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2830373041\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57256\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57256/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57256\"\u003e#57256\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"move NEWS to HISTORY (#57256)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"KristofferC","displayName":"Kristoffer Carlsson","avatarUrl":"https://avatars.githubusercontent.com/u/1282691?v=4","path":"/KristofferC","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Feb 5, 2025","commits":[{"oid":"99fd5d9a92190e826bc462d5739e7be948a3bf44","url":"/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44","authoredDate":"2025-02-05T08:24:14.000-05:00","committedDate":"2025-02-05T14:24:14.000+01:00","shortMessage":"edit NEWS for v1.12 (#57262)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"edit NEWS for v1.12 (#57262)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44\"\u003eedit NEWS for v1.12 (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2831088475\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57262\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57262/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57262\"\u003e#57262\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"edit NEWS for v1.12 (#57262)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"JeffBezanson","displayName":"Jeff Bezanson","avatarUrl":"https://avatars.githubusercontent.com/u/744556?v=4","path":"/JeffBezanson","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Feb 3, 2025","commits":[{"oid":"4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16","url":"/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16","authoredDate":"2025-02-02T23:43:16.000-06:00","committedDate":"2025-02-03T00:43:16.000-05:00","shortMessage":"Define publicity at a per-binding level, not per-symbol (#57094)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Define publicity at a per-binding level, not per-symbol (#57094)\n\nSymbols don't belong to modules and can't be marked public. The\nstatement `public Fix` in Base does not make the symbol `:Fix` public\neverywhere. My package's `Package.Fix` may still be private. It's\nbindings that are marked this way:\n\n\nhttps://github.com/JuliaLang/julia/blob/fa9478b5178052ef00690732fe363601182b6922/src/julia.h#L695-L705\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16\"\u003eDefine publicity at a per-binding level, not per-symbol (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2796999825\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57094\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57094/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57094\"\u003e#57094\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Define publicity at a per-binding level, not per-symbol (#57094)\n\nSymbols don't belong to modules and can't be marked public. The\nstatement `public Fix` in Base does not make the symbol `:Fix` public\neverywhere. My package's `Package.Fix` may still be private. It's\nbindings that are marked this way:\n\n\nhttps://github.com/JuliaLang/julia/blob/fa9478b5178052ef00690732fe363601182b6922/src/julia.h#L695-L705\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Symbols don't belong to modules and can't be marked public. The\nstatement `public Fix` in Base does not make the symbol `:Fix` public\neverywhere. My package's `Package.Fix` may still be private. It's\nbindings that are marked this way:\n\n\n\u003ca href=\"https://github.com/JuliaLang/julia/blob/fa9478b5178052ef00690732fe363601182b6922/src/julia.h#L695-L705\"\u003ehttps://github.com/JuliaLang/julia/blob/fa9478b5178052ef00690732fe363601182b6922/src/julia.h#L695-L705\u003c/a\u003e","authors":[{"login":"LilithHafner","displayName":"Lilith Orion Hafner","avatarUrl":"https://avatars.githubusercontent.com/u/60898866?v=4","path":"/LilithHafner","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 28, 2025","commits":[{"oid":"575d8e805d2b0b2cc2213b7745f3a90cef190b0c","url":"/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c","authoredDate":"2025-01-28T10:12:29.000-05:00","committedDate":"2025-01-28T10:12:29.000-05:00","shortMessage":"Add `Timer` args to struct and add show method (#57081)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add `Timer` args to struct and add show method (#57081)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c\"\u003eAdd\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Add `Timer` args to struct and add show method (#57081)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c\"\u003eTimer\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Add `Timer` args to struct and add show method (#57081)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c\"\u003eargs to struct and add show method (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2795961810\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57081\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57081/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57081\"\u003e#57081\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add `Timer` args to struct and add show method (#57081)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"IanButterworth","displayName":"Ian Butterworth","avatarUrl":"https://avatars.githubusercontent.com/u/1694067?v=4","path":"/IanButterworth","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"fbe865657942da7d73cc02f76064f9ba9cdef56c","url":"/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c","authoredDate":"2025-01-27T22:43:54.000-05:00","committedDate":"2025-01-27T22:43:54.000-05:00","shortMessage":"Default to 1 interactive thread (#57087)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Default to 1 interactive thread (#57087)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c\"\u003eDefault to 1 interactive thread (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2796242443\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57087\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57087/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57087\"\u003e#57087\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Default to 1 interactive thread (#57087)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"IanButterworth","displayName":"Ian Butterworth","avatarUrl":"https://avatars.githubusercontent.com/u/1694067?v=4","path":"/IanButterworth","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 27, 2025","commits":[{"oid":"cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7","url":"/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7","authoredDate":"2025-01-27T13:25:59.000-05:00","committedDate":"2025-01-27T13:25:59.000-05:00","shortMessage":"Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7\"\u003eAdd option to use\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7\"\u003e@spawn :samepool\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7\"\u003efor using the same threadpool as the caller (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2800047069\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57109\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57109/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57109\"\u003e#57109\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"IanButterworth","displayName":"Ian Butterworth","avatarUrl":"https://avatars.githubusercontent.com/u/1694067?v=4","path":"/IanButterworth","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 21, 2025","commits":[{"oid":"323ca86cb5ff614b713c3995ea11b7755b74190c","url":"/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c","authoredDate":"2025-01-22T00:15:50.000+08:00","committedDate":"2025-01-21T17:15:50.000+01:00","shortMessage":"base: add `Sys.detectwsl()` (#57069)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"base: add `Sys.detectwsl()` (#57069)\n\nClose #36425, fix #36354\r\n\r\n\r\n## How to detect WSL?\r\n\r\nThere are a number of ways that can be used to detect WSL environments,\r\nbut each can have false positives.\r\n\r\nWe finally chose to use the same method as Snapd to detect WSL.\r\nBecause Windows installs Ubuntu LTS as WSL by default.\r\nSo we assume that Snapd's detection method will work for most users.\r\n\r\n- Ubuntu/Snapd:\r\nhttps://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172\r\n- microsoft/WSL#423\r\n- microsoft/WSL#4071\r\n- https://superuser.com/q/1749781/1460597\r\n\r\n\r\n## Known limitations\r\n\r\n- this is a runtime test, and thus cannot meaningfully be used in\r\n`@static if` constructs.\r\n- Linux users can create their own\r\n\t- `/proc/sys/fs/binfmt_misc/WSLInterop` file\r\n\t- or `/run/WSL/` folder\r\n\r\n\tto pretend to be a WSL environment.\r\n\r\n\r\n--- \r\n\r\n- I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and\r\nalpine-release-3.17.0 (win store)\r\n- [x] Add compat, NEWS, tests\r\n- [x] Take a look at different detect methods,\r\n figure out which one is more robust\r\n\r\n---------\r\n\r\nCo-authored-by: Gautam Mishra \u0026lt;mishragautam96@gmail.com\u0026gt;\r\nCo-authored-by: Max Horn \u0026lt;241512+fingolfin@users.noreply.github.com\u0026gt;\r\nCo-authored-by: Chengyu Han \u0026lt;git@wo-class.cn\u0026gt;\r\nCo-authored-by: Alex Arslan \u0026lt;ararslan@comcast.net\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c\"\u003ebase: add\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"base: add `Sys.detectwsl()` (#57069)\n\nClose #36425, fix #36354\r\n\r\n\r\n## How to detect WSL?\r\n\r\nThere are a number of ways that can be used to detect WSL environments,\r\nbut each can have false positives.\r\n\r\nWe finally chose to use the same method as Snapd to detect WSL.\r\nBecause Windows installs Ubuntu LTS as WSL by default.\r\nSo we assume that Snapd's detection method will work for most users.\r\n\r\n- Ubuntu/Snapd:\r\nhttps://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172\r\n- microsoft/WSL#423\r\n- microsoft/WSL#4071\r\n- https://superuser.com/q/1749781/1460597\r\n\r\n\r\n## Known limitations\r\n\r\n- this is a runtime test, and thus cannot meaningfully be used in\r\n`@static if` constructs.\r\n- Linux users can create their own\r\n\t- `/proc/sys/fs/binfmt_misc/WSLInterop` file\r\n\t- or `/run/WSL/` folder\r\n\r\n\tto pretend to be a WSL environment.\r\n\r\n\r\n--- \r\n\r\n- I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and\r\nalpine-release-3.17.0 (win store)\r\n- [x] Add compat, NEWS, tests\r\n- [x] Take a look at different detect methods,\r\n figure out which one is more robust\r\n\r\n---------\r\n\r\nCo-authored-by: Gautam Mishra \u0026lt;mishragautam96@gmail.com\u0026gt;\r\nCo-authored-by: Max Horn \u0026lt;241512+fingolfin@users.noreply.github.com\u0026gt;\r\nCo-authored-by: Chengyu Han \u0026lt;git@wo-class.cn\u0026gt;\r\nCo-authored-by: Alex Arslan \u0026lt;ararslan@comcast.net\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c\"\u003eSys.detectwsl()\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"base: add `Sys.detectwsl()` (#57069)\n\nClose #36425, fix #36354\r\n\r\n\r\n## How to detect WSL?\r\n\r\nThere are a number of ways that can be used to detect WSL environments,\r\nbut each can have false positives.\r\n\r\nWe finally chose to use the same method as Snapd to detect WSL.\r\nBecause Windows installs Ubuntu LTS as WSL by default.\r\nSo we assume that Snapd's detection method will work for most users.\r\n\r\n- Ubuntu/Snapd:\r\nhttps://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172\r\n- microsoft/WSL#423\r\n- microsoft/WSL#4071\r\n- https://superuser.com/q/1749781/1460597\r\n\r\n\r\n## Known limitations\r\n\r\n- this is a runtime test, and thus cannot meaningfully be used in\r\n`@static if` constructs.\r\n- Linux users can create their own\r\n\t- `/proc/sys/fs/binfmt_misc/WSLInterop` file\r\n\t- or `/run/WSL/` folder\r\n\r\n\tto pretend to be a WSL environment.\r\n\r\n\r\n--- \r\n\r\n- I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and\r\nalpine-release-3.17.0 (win store)\r\n- [x] Add compat, NEWS, tests\r\n- [x] Take a look at different detect methods,\r\n figure out which one is more robust\r\n\r\n---------\r\n\r\nCo-authored-by: Gautam Mishra \u0026lt;mishragautam96@gmail.com\u0026gt;\r\nCo-authored-by: Max Horn \u0026lt;241512+fingolfin@users.noreply.github.com\u0026gt;\r\nCo-authored-by: Chengyu Han \u0026lt;git@wo-class.cn\u0026gt;\r\nCo-authored-by: Alex Arslan \u0026lt;ararslan@comcast.net\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c\"\u003e(\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2792794844\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/57069\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/57069/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/57069\"\u003e#57069\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"base: add `Sys.detectwsl()` (#57069)\n\nClose #36425, fix #36354\r\n\r\n\r\n## How to detect WSL?\r\n\r\nThere are a number of ways that can be used to detect WSL environments,\r\nbut each can have false positives.\r\n\r\nWe finally chose to use the same method as Snapd to detect WSL.\r\nBecause Windows installs Ubuntu LTS as WSL by default.\r\nSo we assume that Snapd's detection method will work for most users.\r\n\r\n- Ubuntu/Snapd:\r\nhttps://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172\r\n- microsoft/WSL#423\r\n- microsoft/WSL#4071\r\n- https://superuser.com/q/1749781/1460597\r\n\r\n\r\n## Known limitations\r\n\r\n- this is a runtime test, and thus cannot meaningfully be used in\r\n`@static if` constructs.\r\n- Linux users can create their own\r\n\t- `/proc/sys/fs/binfmt_misc/WSLInterop` file\r\n\t- or `/run/WSL/` folder\r\n\r\n\tto pretend to be a WSL environment.\r\n\r\n\r\n--- \r\n\r\n- I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and\r\nalpine-release-3.17.0 (win store)\r\n- [x] Add compat, NEWS, tests\r\n- [x] Take a look at different detect methods,\r\n figure out which one is more robust\r\n\r\n---------\r\n\r\nCo-authored-by: Gautam Mishra \u0026lt;mishragautam96@gmail.com\u0026gt;\r\nCo-authored-by: Max Horn \u0026lt;241512+fingolfin@users.noreply.github.com\u0026gt;\r\nCo-authored-by: Chengyu Han \u0026lt;git@wo-class.cn\u0026gt;\r\nCo-authored-by: Alex Arslan \u0026lt;ararslan@comcast.net\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c\"\u003e)\u003c/a\u003e","bodyMessageHtml":"\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes pull request #36425.\"\u003eClose\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"645120663\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/36425\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/36425/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/36425\"\u003e#36425\u003c/a\u003e, \u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #36354.\"\u003efix\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"641648426\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/36354\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/36354/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/36354\"\u003e#36354\u003c/a\u003e\n\n\n## How to detect WSL?\n\nThere are a number of ways that can be used to detect WSL environments,\nbut each can have false positives.\n\nWe finally chose to use the same method as Snapd to detect WSL.\nBecause Windows installs Ubuntu LTS as WSL by default.\nSo we assume that Snapd's detection method will work for most users.\n\n- Ubuntu/Snapd:\n\u003ca href=\"https://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172\"\u003ehttps://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172\u003c/a\u003e\n- \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"156646788\" data-permission-text=\"Title is private\" data-url=\"https://github.com/microsoft/WSL/issues/423\" data-hovercard-type=\"issue\" data-hovercard-url=\"/microsoft/WSL/issues/423/hovercard\" href=\"https://github.com/microsoft/WSL/issues/423\"\u003emicrosoft/WSL#423\u003c/a\u003e\n- \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"449160878\" data-permission-text=\"Title is private\" data-url=\"https://github.com/microsoft/WSL/issues/4071\" data-hovercard-type=\"issue\" data-hovercard-url=\"/microsoft/WSL/issues/4071/hovercard\" href=\"https://github.com/microsoft/WSL/issues/4071\"\u003emicrosoft/WSL#4071\u003c/a\u003e\n- \u003ca href=\"https://superuser.com/q/1749781/1460597\" rel=\"nofollow\"\u003ehttps://superuser.com/q/1749781/1460597\u003c/a\u003e\n\n\n## Known limitations\n\n- this is a runtime test, and thus cannot meaningfully be used in\n`@static if` constructs.\n- Linux users can create their own\n\t- `/proc/sys/fs/binfmt_misc/WSLInterop` file\n\t- or `/run/WSL/` folder\n\n\tto pretend to be a WSL environment.\n\n\n--- \n\n- I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and\nalpine-release-3.17.0 (win store)\n- [x] Add compat, NEWS, tests\n- [x] Take a look at different detect methods,\n figure out which one is more robust\n\n---------\n\nCo-authored-by: Gautam Mishra \u0026lt;mishragautam96@gmail.com\u0026gt;\nCo-authored-by: Max Horn \u0026lt;241512+fingolfin@users.noreply.github.com\u0026gt;\nCo-authored-by: Chengyu Han \u0026lt;git@wo-class.cn\u0026gt;\nCo-authored-by: Alex Arslan \u0026lt;ararslan@comcast.net\u0026gt;","authors":[{"login":"inkydragon","displayName":"Chengyu Han","avatarUrl":"https://avatars.githubusercontent.com/u/5158738?v=4","path":"/inkydragon","isGitHub":false},{"login":"mgautam98","displayName":"Gautam Mishra","avatarUrl":"https://avatars.githubusercontent.com/u/29784549?v=4","path":"/mgautam98","isGitHub":false},{"login":"fingolfin","displayName":"Max Horn","avatarUrl":"https://avatars.githubusercontent.com/u/241512?v=4","path":"/fingolfin","isGitHub":false},{"login":"ararslan","displayName":"Alex Arslan","avatarUrl":"https://avatars.githubusercontent.com/u/6396159?v=4","path":"/ararslan","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 8, 2025","commits":[{"oid":"38b41b5f6cbef96643f1495e1c6ea2470b6e7250","url":"/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250","authoredDate":"2025-01-08T08:29:43.000-05:00","committedDate":"2025-01-08T07:29:43.000-06:00","shortMessage":"Allow `map!(f, array)` (#40632)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Allow `map!(f, array)` (#40632)\n\n...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`.\r\n\r\n---------\r\n\r\nCo-authored-by: Lilith Orion Hafner \u0026lt;lilithhafner@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250\"\u003eAllow\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Allow `map!(f, array)` (#40632)\n\n...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`.\r\n\r\n---------\r\n\r\nCo-authored-by: Lilith Orion Hafner \u0026lt;lilithhafner@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250\"\u003emap!(f, array)\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Allow `map!(f, array)` (#40632)\n\n...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`.\r\n\r\n---------\r\n\r\nCo-authored-by: Lilith Orion Hafner \u0026lt;lilithhafner@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250\"\u003e(\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"868905797\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/40632\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/40632/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/40632\"\u003e#40632\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Allow `map!(f, array)` (#40632)\n\n...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`.\r\n\r\n---------\r\n\r\nCo-authored-by: Lilith Orion Hafner \u0026lt;lilithhafner@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250\"\u003e)\u003c/a\u003e","bodyMessageHtml":"...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`.\n\n---------\n\nCo-authored-by: Lilith Orion Hafner \u0026lt;lilithhafner@gmail.com\u0026gt;","authors":[{"login":"mcabbott","displayName":"Michael Abbott","avatarUrl":"https://avatars.githubusercontent.com/u/32575566?v=4","path":"/mcabbott","isGitHub":false},{"login":"LilithHafner","displayName":"Lilith Orion Hafner","avatarUrl":"https://avatars.githubusercontent.com/u/60898866?v=4","path":"/LilithHafner","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 6, 2025","commits":[{"oid":"0787a62091f886b39537386c3d1eaba72cb673ed","url":"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed","authoredDate":"2025-01-06T16:33:16.000-05:00","committedDate":"2025-01-06T16:33:16.000-05:00","shortMessage":"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed\"\u003eMake\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed\"\u003eTimer(f, ...)\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed\"\u003etasks match the stickiness of the parent task. Add\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed\"\u003espawn\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed\"\u003ekwarg. (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2715631336\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56745\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56745/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56745\"\u003e#56745\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"IanButterworth","displayName":"Ian Butterworth","avatarUrl":"https://avatars.githubusercontent.com/u/1694067?v=4","path":"/IanButterworth","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Jan 2, 2025","commits":[{"oid":"0741f9b99587e90333b736999110fba3d1bc6cac","url":"/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac","authoredDate":"2025-01-02T09:30:50.000-05:00","committedDate":"2025-01-02T22:30:50.000+08:00","shortMessage":"deps: support Unicode 16 via utf8proc 2.10.0 (#56925)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title='deps: support Unicode 16 via utf8proc 2.10.0 (#56925)\n\nSimilar to #51799, support [Unicode\n16](https://www.unicode.org/versions/Unicode16.0.0/) by bumping utf8proc\nto 2.10.0 (thanks to https://github.com/JuliaStrings/utf8proc/pull/277\nby @eschnett).\n\nThis allows us to use [7 exciting new emoji\ncharacters](https://www.unicode.org/emoji/charts-16.0/emoji-released.html)\nas identifiers, including \"face with bags under eyes\"\n\n![image](https://github.com/user-attachments/assets/4959b7ca-100e-4efc-af58-b03184ae2dca)\n`\"\\U1fae9\"` (but still no superscript \"q\").\n\nCloses #56035.' class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac\"\u003edeps: support Unicode 16 via utf8proc 2.10.0 (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2764674487\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56925\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56925/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56925\"\u003e#56925\u003c/a\u003e\u003ca data-pjax=\"true\" title='deps: support Unicode 16 via utf8proc 2.10.0 (#56925)\n\nSimilar to #51799, support [Unicode\n16](https://www.unicode.org/versions/Unicode16.0.0/) by bumping utf8proc\nto 2.10.0 (thanks to https://github.com/JuliaStrings/utf8proc/pull/277\nby @eschnett).\n\nThis allows us to use [7 exciting new emoji\ncharacters](https://www.unicode.org/emoji/charts-16.0/emoji-released.html)\nas identifiers, including \"face with bags under eyes\"\n\n![image](https://github.com/user-attachments/assets/4959b7ca-100e-4efc-af58-b03184ae2dca)\n`\"\\U1fae9\"` (but still no superscript \"q\").\n\nCloses #56035.' class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Similar to \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1955130015\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/51799\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/51799/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/51799\"\u003e#51799\u003c/a\u003e, support [Unicode\n16](\u003ca href=\"https://www.unicode.org/versions/Unicode16.0.0/\" rel=\"nofollow\"\u003ehttps://www.unicode.org/versions/Unicode16.0.0/\u003c/a\u003e) by bumping utf8proc\nto 2.10.0 (thanks to \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2748734179\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaStrings/utf8proc/issues/277\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaStrings/utf8proc/pull/277/hovercard\" href=\"https://github.com/JuliaStrings/utf8proc/pull/277\"\u003eJuliaStrings/utf8proc#277\u003c/a\u003e\nby \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/eschnett/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/eschnett\"\u003e@eschnett\u003c/a\u003e).\n\nThis allows us to use [7 exciting new emoji\ncharacters](\u003ca href=\"https://www.unicode.org/emoji/charts-16.0/emoji-released.html\" rel=\"nofollow\"\u003ehttps://www.unicode.org/emoji/charts-16.0/emoji-released.html\u003c/a\u003e)\nas identifiers, including \"face with bags under eyes\"\n\n![image](\u003ca href=\"https://github.com/user-attachments/assets/4959b7ca-100e-4efc-af58-b03184ae2dca\"\u003ehttps://github.com/user-attachments/assets/4959b7ca-100e-4efc-af58-b03184ae2dca\u003c/a\u003e)\n`\"\\U1fae9\"` (but still no superscript \"q\").\n\n\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #56035.\"\u003eCloses\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2571672001\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56035\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/56035/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/56035\"\u003e#56035\u003c/a\u003e.","authors":[{"login":"stevengj","displayName":"Steven G. Johnson","avatarUrl":"https://avatars.githubusercontent.com/u/2913679?v=4","path":"/stevengj","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 31, 2024","commits":[{"oid":"6136893eeed0c3559263a5aa465b630d2c7dc821","url":"/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821","authoredDate":"2024-12-31T18:34:05.000+01:00","committedDate":"2024-12-31T18:34:05.000+01:00","shortMessage":"[Test] Print RNG of a failed testset and add option to set it (#56260)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title='[Test] Print RNG of a failed testset and add option to set it (#56260)\n\nAlso, add a keyword option to `@testset` to let users override the seed\r\nused there, to make testsets more replicable.\r\n\r\nTo give you a taster of what this PR\r\nenables:\r\n```\r\njulia\u0026gt; using Random, Test\r\n\r\njulia\u0026gt; @testset begin\r\n @test rand() == 0\r\n end;\r\ntest set: Test Failed at REPL[2]:2\r\n Expression: rand() == 0\r\n Evaluated: 0.559472630416976 == 0\r\n\r\nStacktrace:\r\n [1] top-level scope\r\n @ REPL[2]:2\r\n [2] macro expansion\r\n @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:1713 [inlined]\r\n [3] macro expansion\r\n @ REPL[2]:2 [inlined]\r\n [4] macro expansion\r\n @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:679 [inlined]\r\nTest Summary: | Fail Total Time\r\ntest set | 1 1 0.9s\r\nERROR: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken.\r\nRandom seed for this testset: Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850)\r\n\r\njulia\u0026gt; @testset rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin\r\n @test rand() == 0.559472630416976\r\n end;\r\nTest Summary: | Pass Total Time\r\ntest set | 1 1 0.0s\r\n```\r\nThis also works with nested testsets, and testsets on for loops:\r\n```\r\njulia\u0026gt; @testset rng=Xoshiro(0xc380f460355639ee, 0xb39bc754b7d63bbf, 0x1551dbcfb5ed5668, 0x71ab5a18fec21a25, 0x649d0c1be1ca5436) \"Outer\" begin\r\n @test rand() == 0.0004120194925605336\r\n @testset rng=Xoshiro(0xee97f5b53f7cdc49, 0x480ac387b0527d3d, 0x614b416502a9e0f5, 0x5250cb36e4a4ceb1, 0xed6615c59e475fa0) \"Inner: $(i)\" for i in 1:10\r\n @test rand() == 0.39321938407066637\r\n end\r\n end;\r\nTest Summary: | Pass Total Time\r\nOuter | 11 11 0.0s\r\n```\r\n\r\nBeing able to see what was the seed inside a testset and being able to\r\nset it afterwards should make replicating test failures which only\r\ndepend on the state of the RNG much easier to debug.' class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821\"\u003e[Test] Print RNG of a failed testset and add option to set it (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2601010382\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56260\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56260/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56260\"\u003e#56260\u003c/a\u003e\u003ca data-pjax=\"true\" title='[Test] Print RNG of a failed testset and add option to set it (#56260)\n\nAlso, add a keyword option to `@testset` to let users override the seed\r\nused there, to make testsets more replicable.\r\n\r\nTo give you a taster of what this PR\r\nenables:\r\n```\r\njulia\u0026gt; using Random, Test\r\n\r\njulia\u0026gt; @testset begin\r\n @test rand() == 0\r\n end;\r\ntest set: Test Failed at REPL[2]:2\r\n Expression: rand() == 0\r\n Evaluated: 0.559472630416976 == 0\r\n\r\nStacktrace:\r\n [1] top-level scope\r\n @ REPL[2]:2\r\n [2] macro expansion\r\n @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:1713 [inlined]\r\n [3] macro expansion\r\n @ REPL[2]:2 [inlined]\r\n [4] macro expansion\r\n @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:679 [inlined]\r\nTest Summary: | Fail Total Time\r\ntest set | 1 1 0.9s\r\nERROR: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken.\r\nRandom seed for this testset: Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850)\r\n\r\njulia\u0026gt; @testset rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin\r\n @test rand() == 0.559472630416976\r\n end;\r\nTest Summary: | Pass Total Time\r\ntest set | 1 1 0.0s\r\n```\r\nThis also works with nested testsets, and testsets on for loops:\r\n```\r\njulia\u0026gt; @testset rng=Xoshiro(0xc380f460355639ee, 0xb39bc754b7d63bbf, 0x1551dbcfb5ed5668, 0x71ab5a18fec21a25, 0x649d0c1be1ca5436) \"Outer\" begin\r\n @test rand() == 0.0004120194925605336\r\n @testset rng=Xoshiro(0xee97f5b53f7cdc49, 0x480ac387b0527d3d, 0x614b416502a9e0f5, 0x5250cb36e4a4ceb1, 0xed6615c59e475fa0) \"Inner: $(i)\" for i in 1:10\r\n @test rand() == 0.39321938407066637\r\n end\r\n end;\r\nTest Summary: | Pass Total Time\r\nOuter | 11 11 0.0s\r\n```\r\n\r\nBeing able to see what was the seed inside a testset and being able to\r\nset it afterwards should make replicating test failures which only\r\ndepend on the state of the RNG much easier to debug.' class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Also, add a keyword option to `@testset` to let users override the seed\nused there, to make testsets more replicable.\n\nTo give you a taster of what this PR\nenables:\n```\njulia\u0026gt; using Random, Test\n\njulia\u0026gt; \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/testset/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/testset\"\u003e@testset\u003c/a\u003e begin\n \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/test/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/test\"\u003e@test\u003c/a\u003e rand() == 0\n end;\ntest set: Test Failed at REPL[2]:2\n Expression: rand() == 0\n Evaluated: 0.559472630416976 == 0\n\nStacktrace:\n [1] top-level scope\n @ REPL[2]:2\n [2] macro expansion\n @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:1713 [inlined]\n [3] macro expansion\n @ REPL[2]:2 [inlined]\n [4] macro expansion\n @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:679 [inlined]\nTest Summary: | Fail Total Time\ntest set | 1 1 0.9s\nERROR: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken.\nRandom seed for this testset: Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850)\n\njulia\u0026gt; \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/testset/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/testset\"\u003e@testset\u003c/a\u003e rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin\n \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/test/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/test\"\u003e@test\u003c/a\u003e rand() == 0.559472630416976\n end;\nTest Summary: | Pass Total Time\ntest set | 1 1 0.0s\n```\nThis also works with nested testsets, and testsets on for loops:\n```\njulia\u0026gt; \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/testset/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/testset\"\u003e@testset\u003c/a\u003e rng=Xoshiro(0xc380f460355639ee, 0xb39bc754b7d63bbf, 0x1551dbcfb5ed5668, 0x71ab5a18fec21a25, 0x649d0c1be1ca5436) \"Outer\" begin\n \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/test/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/test\"\u003e@test\u003c/a\u003e rand() == 0.0004120194925605336\n \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/testset/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/testset\"\u003e@testset\u003c/a\u003e rng=Xoshiro(0xee97f5b53f7cdc49, 0x480ac387b0527d3d, 0x614b416502a9e0f5, 0x5250cb36e4a4ceb1, 0xed6615c59e475fa0) \"Inner: $(i)\" for i in 1:10\n \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/test/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/test\"\u003e@test\u003c/a\u003e rand() == 0.39321938407066637\n end\n end;\nTest Summary: | Pass Total Time\nOuter | 11 11 0.0s\n```\n\nBeing able to see what was the seed inside a testset and being able to\nset it afterwards should make replicating test failures which only\ndepend on the state of the RNG much easier to debug.","authors":[{"login":"giordano","displayName":"Mosè Giordano","avatarUrl":"https://avatars.githubusercontent.com/u/765740?v=4","path":"/giordano","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 27, 2024","commits":[{"oid":"8788497dc215088227af37b9a7065e00ca959859","url":"/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859","authoredDate":"2024-12-27T15:38:22.000-06:00","committedDate":"2024-12-27T15:38:22.000-06:00","shortMessage":"Add #53664, public\u0026export error to news (#56911)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add #53664, public\u0026amp;export error to news (#56911)\n\nSuggested by @simeonschaub\r\n[here](https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859\"\u003eAdd\u003c/a\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2176743272\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/53664\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/53664/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/53664\"\u003e#53664\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add #53664, public\u0026amp;export error to news (#56911)\n\nSuggested by @simeonschaub\r\n[here](https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859\"\u003e, public\u0026amp;export error to news (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2761069080\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56911\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56911/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56911\"\u003e#56911\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add #53664, public\u0026amp;export error to news (#56911)\n\nSuggested by @simeonschaub\r\n[here](https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Suggested by \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/simeonschaub/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/simeonschaub\"\u003e@simeonschaub\u003c/a\u003e\n[here](\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2176743272\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/53664\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/53664/hovercard?comment_id=2562408676\u0026amp;comment_type=issue_comment\" href=\"https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676\"\u003e#53664 (comment)\u003c/a\u003e)","authors":[{"login":"LilithHafner","displayName":"Lilith Orion Hafner","avatarUrl":"https://avatars.githubusercontent.com/u/60898866?v=4","path":"/LilithHafner","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 8, 2024","commits":[{"oid":"e0656ac017a427f739f985809017a33c269b3af1","url":"/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1","authoredDate":"2024-12-08T15:48:54.000-06:00","committedDate":"2024-12-08T15:48:54.000-06:00","shortMessage":"Add sort for NTuples (#54494)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add sort for NTuples (#54494)\n\nThis is partially a reland of #46104, but without the controversial `sort(x) = sort!(copymutable(x))` and with some extensibility improvements. Implements #54489.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1\"\u003eAdd sort for NTuples (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2300742507\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/54494\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/54494/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/54494\"\u003e#54494\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add sort for NTuples (#54494)\n\nThis is partially a reland of #46104, but without the controversial `sort(x) = sort!(copymutable(x))` and with some extensibility improvements. Implements #54489.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1\"\u003e)\u003c/a\u003e","bodyMessageHtml":"This is partially a reland of \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1310029741\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/46104\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/46104/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/46104\"\u003e#46104\u003c/a\u003e, but without the controversial `sort(x) = sort!(copymutable(x))` and with some extensibility improvements. Implements \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2299914797\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/54489\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/54489/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/54489\"\u003e#54489\u003c/a\u003e.","authors":[{"login":"LilithHafner","displayName":"Lilith Orion Hafner","avatarUrl":"https://avatars.githubusercontent.com/u/60898866?v=4","path":"/LilithHafner","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"54755adb1d96539fdd125ea9c442d0fcf206d5cc","url":"/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc","authoredDate":"2024-12-08T21:21:58.000+08:00","committedDate":"2024-12-08T07:21:58.000-06:00","shortMessage":"Fix typos in docstring, comments, and news (#56778)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Fix typos in docstring, comments, and news (#56778)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc\"\u003eFix typos in docstring, comments, and news (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2725202691\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56778\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56778/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56778\"\u003e#56778\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Fix typos in docstring, comments, and news (#56778)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"clonefetch","displayName":"clonefetch","avatarUrl":"https://avatars.githubusercontent.com/u/166312854?v=4","path":"/clonefetch","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 7, 2024","commits":[{"oid":"6cb9f04c1ec562f800669ba13a9a096203aea7cf","url":"/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf","authoredDate":"2024-12-07T19:56:09.000+01:00","committedDate":"2024-12-07T12:56:09.000-06:00","shortMessage":"Add #54800 to NEWS (#56774)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add #54800 to NEWS (#56774)\n\nShow glyphs for latex or emoji shortcodes being suggested in the REPL\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf\"\u003eAdd\u003c/a\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2353089391\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/54800\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/54800/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/54800\"\u003e#54800\u003c/a\u003e \u003ca data-pjax=\"true\" title=\"Add #54800 to NEWS (#56774)\n\nShow glyphs for latex or emoji shortcodes being suggested in the REPL\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf\"\u003eto NEWS (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2724682368\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56774\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56774/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56774\"\u003e#56774\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add #54800 to NEWS (#56774)\n\nShow glyphs for latex or emoji shortcodes being suggested in the REPL\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Show glyphs for latex or emoji shortcodes being suggested in the REPL","authors":[{"login":"jkrumbiegel","displayName":"Julius Krumbiegel","avatarUrl":"https://avatars.githubusercontent.com/u/22495855?v=4","path":"/jkrumbiegel","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 6, 2024","commits":[{"oid":"184ad5bcc955a86638cbc4cc3147b12f0eafb513","url":"/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513","authoredDate":"2024-12-06T22:09:44.000Z","committedDate":"2024-12-06T17:09:44.000-05:00","shortMessage":"Add per-task metrics (#56320)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add per-task metrics (#56320)\n\nClose https://github.com/JuliaLang/julia/issues/47351 (builds on top of\r\nhttps://github.com/JuliaLang/julia/pull/48416)\r\n\r\nAdds two per-task metrics:\r\n- running time = amount of time the task was actually running (according\r\nto our scheduler). Note: currently inclusive of GC time, but would be\r\ngood to be able to separate that out (in a future PR)\r\n- wall time = amount of time between the scheduler becoming aware of\r\nthis task and the task entering a terminal state (i.e. done or failed).\r\n\r\nWe record running time in `wait()`, where the scheduler stops running\r\nthe task as well as in `yield(t)`, `yieldto(t)` and `throwto(t)`, which\r\nbypass the scheduler. Other places where a task stops running (for\r\n`Channel`, `ReentrantLock`, `Event`, `Timer` and `Semaphore` are all\r\nimplemented in terms of `wait(Condition)`, which in turn calls `wait()`.\r\n`LibuvStream` similarly calls `wait()`.\r\n\r\nThis should capture everything (albeit, slightly over-counting task CPU\r\ntime by including any enqueuing work done before we hit `wait()`).\r\n\r\nThe various metrics counters could be a separate inlined struct if we\r\nthink that's a useful abstraction, but for now i've just put them\r\ndirectly in `jl_task_t`. They are all atomic, except the\r\n`metrics_enabled` flag itself (which we now have to check on task\r\nstart/switch/done even if metrics are not enabled) which is set on task\r\nconstruction and marked `const` on the julia side.\r\n\r\nIn future PRs we could add more per-task metrics, e.g. compilation time,\r\nGC time, allocations, potentially a wait-time breakdown (time waiting on\r\nlocks, channels, in the scheduler run queue, etc.), potentially the\r\nnumber of yields.\r\n\r\nPerhaps in future there could be ways to enable this on a per-thread and\r\nper-task basis. And potentially in future these same timings could be\r\nused by `@time` (e.g. writing this same timing data to a ScopedValue\r\nlike in https://github.com/JuliaLang/julia/pull/55103 but only for tasks\r\nlexically scoped to inside the `@time` block).\r\n\r\nTimings are off by default but can be turned on globally via starting\r\nJulia with `--task-metrics=yes` or calling\r\n`Base.Experimental.task_metrics(true)`. Metrics are collected for all\r\ntasks created when metrics are enabled. In other words,\r\nenabling/disabling timings via `Base.Experimental.task_metrics` does not\r\naffect existing `Task`s, only new `Task`s.\r\n\r\nThe other new APIs are `Base.Experimental.task_running_time_ns(::Task)`\r\nand `Base.Experimental.task_wall_time_ns(::Task)` for retrieving the new\r\nmetrics. These are safe to call on any task (including the current task,\r\nor a task running on another thread). All these are in\r\n`Base.Experimental` to give us room to change up the APIs as we add more\r\nmetrics in future PRs (without worrying about release timelines).\r\n\r\ncc @NHDaly @kpamnany @d-netto\r\n\r\n---------\r\n\r\nCo-authored-by: Pete Vilter \u0026lt;pete.vilter@gmail.com\u0026gt;\r\nCo-authored-by: K Pamnany \u0026lt;kpamnany@users.noreply.github.com\u0026gt;\r\nCo-authored-by: Nathan Daly \u0026lt;nathan.daly@relational.ai\u0026gt;\r\nCo-authored-by: Valentin Churavy \u0026lt;vchuravy@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513\"\u003eAdd per-task metrics (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2612616010\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56320\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56320/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56320\"\u003e#56320\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add per-task metrics (#56320)\n\nClose https://github.com/JuliaLang/julia/issues/47351 (builds on top of\r\nhttps://github.com/JuliaLang/julia/pull/48416)\r\n\r\nAdds two per-task metrics:\r\n- running time = amount of time the task was actually running (according\r\nto our scheduler). Note: currently inclusive of GC time, but would be\r\ngood to be able to separate that out (in a future PR)\r\n- wall time = amount of time between the scheduler becoming aware of\r\nthis task and the task entering a terminal state (i.e. done or failed).\r\n\r\nWe record running time in `wait()`, where the scheduler stops running\r\nthe task as well as in `yield(t)`, `yieldto(t)` and `throwto(t)`, which\r\nbypass the scheduler. Other places where a task stops running (for\r\n`Channel`, `ReentrantLock`, `Event`, `Timer` and `Semaphore` are all\r\nimplemented in terms of `wait(Condition)`, which in turn calls `wait()`.\r\n`LibuvStream` similarly calls `wait()`.\r\n\r\nThis should capture everything (albeit, slightly over-counting task CPU\r\ntime by including any enqueuing work done before we hit `wait()`).\r\n\r\nThe various metrics counters could be a separate inlined struct if we\r\nthink that's a useful abstraction, but for now i've just put them\r\ndirectly in `jl_task_t`. They are all atomic, except the\r\n`metrics_enabled` flag itself (which we now have to check on task\r\nstart/switch/done even if metrics are not enabled) which is set on task\r\nconstruction and marked `const` on the julia side.\r\n\r\nIn future PRs we could add more per-task metrics, e.g. compilation time,\r\nGC time, allocations, potentially a wait-time breakdown (time waiting on\r\nlocks, channels, in the scheduler run queue, etc.), potentially the\r\nnumber of yields.\r\n\r\nPerhaps in future there could be ways to enable this on a per-thread and\r\nper-task basis. And potentially in future these same timings could be\r\nused by `@time` (e.g. writing this same timing data to a ScopedValue\r\nlike in https://github.com/JuliaLang/julia/pull/55103 but only for tasks\r\nlexically scoped to inside the `@time` block).\r\n\r\nTimings are off by default but can be turned on globally via starting\r\nJulia with `--task-metrics=yes` or calling\r\n`Base.Experimental.task_metrics(true)`. Metrics are collected for all\r\ntasks created when metrics are enabled. In other words,\r\nenabling/disabling timings via `Base.Experimental.task_metrics` does not\r\naffect existing `Task`s, only new `Task`s.\r\n\r\nThe other new APIs are `Base.Experimental.task_running_time_ns(::Task)`\r\nand `Base.Experimental.task_wall_time_ns(::Task)` for retrieving the new\r\nmetrics. These are safe to call on any task (including the current task,\r\nor a task running on another thread). All these are in\r\n`Base.Experimental` to give us room to change up the APIs as we add more\r\nmetrics in future PRs (without worrying about release timelines).\r\n\r\ncc @NHDaly @kpamnany @d-netto\r\n\r\n---------\r\n\r\nCo-authored-by: Pete Vilter \u0026lt;pete.vilter@gmail.com\u0026gt;\r\nCo-authored-by: K Pamnany \u0026lt;kpamnany@users.noreply.github.com\u0026gt;\r\nCo-authored-by: Nathan Daly \u0026lt;nathan.daly@relational.ai\u0026gt;\r\nCo-authored-by: Valentin Churavy \u0026lt;vchuravy@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513\"\u003e)\u003c/a\u003e","bodyMessageHtml":"\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #47351.\"\u003eClose\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1425938587\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/47351\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/47351/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/47351\"\u003e#47351\u003c/a\u003e (builds on top of\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1558474812\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/48416\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/48416/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/48416\"\u003e#48416\u003c/a\u003e)\n\nAdds two per-task metrics:\n- running time = amount of time the task was actually running (according\nto our scheduler). Note: currently inclusive of GC time, but would be\ngood to be able to separate that out (in a future PR)\n- wall time = amount of time between the scheduler becoming aware of\nthis task and the task entering a terminal state (i.e. done or failed).\n\nWe record running time in `wait()`, where the scheduler stops running\nthe task as well as in `yield(t)`, `yieldto(t)` and `throwto(t)`, which\nbypass the scheduler. Other places where a task stops running (for\n`Channel`, `ReentrantLock`, `Event`, `Timer` and `Semaphore` are all\nimplemented in terms of `wait(Condition)`, which in turn calls `wait()`.\n`LibuvStream` similarly calls `wait()`.\n\nThis should capture everything (albeit, slightly over-counting task CPU\ntime by including any enqueuing work done before we hit `wait()`).\n\nThe various metrics counters could be a separate inlined struct if we\nthink that's a useful abstraction, but for now i've just put them\ndirectly in `jl_task_t`. They are all atomic, except the\n`metrics_enabled` flag itself (which we now have to check on task\nstart/switch/done even if metrics are not enabled) which is set on task\nconstruction and marked `const` on the julia side.\n\nIn future PRs we could add more per-task metrics, e.g. compilation time,\nGC time, allocations, potentially a wait-time breakdown (time waiting on\nlocks, channels, in the scheduler run queue, etc.), potentially the\nnumber of yields.\n\nPerhaps in future there could be ways to enable this on a per-thread and\nper-task basis. And potentially in future these same timings could be\nused by `@time` (e.g. writing this same timing data to a ScopedValue\nlike in \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2403189069\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/55103\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/55103/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/55103\"\u003e#55103\u003c/a\u003e but only for tasks\nlexically scoped to inside the `@time` block).\n\nTimings are off by default but can be turned on globally via starting\nJulia with `--task-metrics=yes` or calling\n`Base.Experimental.task_metrics(true)`. Metrics are collected for all\ntasks created when metrics are enabled. In other words,\nenabling/disabling timings via `Base.Experimental.task_metrics` does not\naffect existing `Task`s, only new `Task`s.\n\nThe other new APIs are `Base.Experimental.task_running_time_ns(::Task)`\nand `Base.Experimental.task_wall_time_ns(::Task)` for retrieving the new\nmetrics. These are safe to call on any task (including the current task,\nor a task running on another thread). All these are in\n`Base.Experimental` to give us room to change up the APIs as we add more\nmetrics in future PRs (without worrying about release timelines).\n\ncc \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/NHDaly/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/NHDaly\"\u003e@NHDaly\u003c/a\u003e \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/kpamnany/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/kpamnany\"\u003e@kpamnany\u003c/a\u003e \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/d-netto/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/d-netto\"\u003e@d-netto\u003c/a\u003e\n\n---------\n\nCo-authored-by: Pete Vilter \u0026lt;pete.vilter@gmail.com\u0026gt;\nCo-authored-by: K Pamnany \u0026lt;kpamnany@users.noreply.github.com\u0026gt;\nCo-authored-by: Nathan Daly \u0026lt;nathan.daly@relational.ai\u0026gt;\nCo-authored-by: Valentin Churavy \u0026lt;vchuravy@users.noreply.github.com\u0026gt;","authors":[{"login":"nickrobinson251","displayName":"Nick Robinson","avatarUrl":"https://avatars.githubusercontent.com/u/13448787?v=4","path":"/nickrobinson251","isGitHub":false},{"login":"vilterp","displayName":"Pete Vilter","avatarUrl":"https://avatars.githubusercontent.com/u/7341?v=4","path":"/vilterp","isGitHub":false},{"login":"kpamnany","displayName":"K Pamnany","avatarUrl":"https://avatars.githubusercontent.com/u/3784427?v=4","path":"/kpamnany","isGitHub":false},{"login":"NHDaly","displayName":"Nathan Daly","avatarUrl":"https://avatars.githubusercontent.com/u/1582097?v=4","path":"/NHDaly","isGitHub":false},{"login":"vchuravy","displayName":"Valentin Churavy","avatarUrl":"https://avatars.githubusercontent.com/u/145258?v=4","path":"/vchuravy","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 3, 2024","commits":[{"oid":"efa917e8775cd40fdd74b657d1e5d2db2342cd07","url":"/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07","authoredDate":"2024-12-02T20:28:05.000-05:00","committedDate":"2024-12-02T20:28:05.000-05:00","shortMessage":"Extend `invoke` to accept CodeInstance (#56660)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Extend `invoke` to accept CodeInstance (#56660)\n\nThis is an alternative mechanism to #56650 that largely achieves the\nsame result, but by hooking into `invoke` rather than a generated\nfunction. They are orthogonal mechanisms, and its possible we want both.\nHowever, in #56650, both Jameson and Valentin were skeptical of the\ngenerated function signature bottleneck. This PR is sort of a hybrid of\nmechanism in #52964 and what I proposed in\nhttps://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877.\n\nIn particular, this PR:\n\n1. Extends `invoke` to support a CodeInstance in place of its usual\n`types` argument.\n\n2. Adds a new `typeinf` optimized generic. The semantics of this\noptimized generic allow the compiler to instead call a companion\n`typeinf_edge` function, allowing a mid-inference interpreter switch\n(like #52964), without being forced through a concrete signature\nbottleneck. However, if calling `typeinf_edge` does not work (e.g.\nbecause the compiler version is mismatched), this still has well defined\nsemantics, you just don't get inference support.\n\nThe additional benefit of the `typeinf` optimized generic is that it\nlets custom cache owners tell the runtime how to \u0026quot;cure\u0026quot; code instances\nthat have lost their native code. Currently the runtime only knows how\nto do that for `owner == nothing` CodeInstances (by re-running\ninference). This extension is not implemented, but the idea is that the\nruntime would be permitted to call the `typeinf` optimized generic on\nthe dead CodeInstance's `owner` and `def` fields to obtain a cured\nCodeInstance (or a user-actionable error from the plugin).\n\nThis PR includes an implementation of `with_new_compiler` from #56650.\nThis PR includes just enough compiler support to make the compiler\noptimize this to the same code that #56650 produced:\n\n```\njulia\u0026gt; @code_typed with_new_compiler(sin, 1.0)\nCodeInfo(\n1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64\n│ %2 = builtin Core.getfield(args, 1)::Float64\n│ %3 = invoke sin(%2::Float64)::Float64\n└── return %3\n) =\u0026gt; Float64\n```\n\nHowever, the implementation here is extremely incomplete. I'm putting it\nup only as a directional sketch to see if people prefer it over #56650.\nIf so, I would prepare a cleaned up version of this PR that has the\noptimized generics as well as the curing support, but not the full\ninference integration (which needs a fair bit more work).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07\"\u003eExtend\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Extend `invoke` to accept CodeInstance (#56660)\n\nThis is an alternative mechanism to #56650 that largely achieves the\nsame result, but by hooking into `invoke` rather than a generated\nfunction. They are orthogonal mechanisms, and its possible we want both.\nHowever, in #56650, both Jameson and Valentin were skeptical of the\ngenerated function signature bottleneck. This PR is sort of a hybrid of\nmechanism in #52964 and what I proposed in\nhttps://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877.\n\nIn particular, this PR:\n\n1. Extends `invoke` to support a CodeInstance in place of its usual\n`types` argument.\n\n2. Adds a new `typeinf` optimized generic. The semantics of this\noptimized generic allow the compiler to instead call a companion\n`typeinf_edge` function, allowing a mid-inference interpreter switch\n(like #52964), without being forced through a concrete signature\nbottleneck. However, if calling `typeinf_edge` does not work (e.g.\nbecause the compiler version is mismatched), this still has well defined\nsemantics, you just don't get inference support.\n\nThe additional benefit of the `typeinf` optimized generic is that it\nlets custom cache owners tell the runtime how to \u0026quot;cure\u0026quot; code instances\nthat have lost their native code. Currently the runtime only knows how\nto do that for `owner == nothing` CodeInstances (by re-running\ninference). This extension is not implemented, but the idea is that the\nruntime would be permitted to call the `typeinf` optimized generic on\nthe dead CodeInstance's `owner` and `def` fields to obtain a cured\nCodeInstance (or a user-actionable error from the plugin).\n\nThis PR includes an implementation of `with_new_compiler` from #56650.\nThis PR includes just enough compiler support to make the compiler\noptimize this to the same code that #56650 produced:\n\n```\njulia\u0026gt; @code_typed with_new_compiler(sin, 1.0)\nCodeInfo(\n1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64\n│ %2 = builtin Core.getfield(args, 1)::Float64\n│ %3 = invoke sin(%2::Float64)::Float64\n└── return %3\n) =\u0026gt; Float64\n```\n\nHowever, the implementation here is extremely incomplete. I'm putting it\nup only as a directional sketch to see if people prefer it over #56650.\nIf so, I would prepare a cleaned up version of this PR that has the\noptimized generics as well as the curing support, but not the full\ninference integration (which needs a fair bit more work).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07\"\u003einvoke\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Extend `invoke` to accept CodeInstance (#56660)\n\nThis is an alternative mechanism to #56650 that largely achieves the\nsame result, but by hooking into `invoke` rather than a generated\nfunction. They are orthogonal mechanisms, and its possible we want both.\nHowever, in #56650, both Jameson and Valentin were skeptical of the\ngenerated function signature bottleneck. This PR is sort of a hybrid of\nmechanism in #52964 and what I proposed in\nhttps://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877.\n\nIn particular, this PR:\n\n1. Extends `invoke` to support a CodeInstance in place of its usual\n`types` argument.\n\n2. Adds a new `typeinf` optimized generic. The semantics of this\noptimized generic allow the compiler to instead call a companion\n`typeinf_edge` function, allowing a mid-inference interpreter switch\n(like #52964), without being forced through a concrete signature\nbottleneck. However, if calling `typeinf_edge` does not work (e.g.\nbecause the compiler version is mismatched), this still has well defined\nsemantics, you just don't get inference support.\n\nThe additional benefit of the `typeinf` optimized generic is that it\nlets custom cache owners tell the runtime how to \u0026quot;cure\u0026quot; code instances\nthat have lost their native code. Currently the runtime only knows how\nto do that for `owner == nothing` CodeInstances (by re-running\ninference). This extension is not implemented, but the idea is that the\nruntime would be permitted to call the `typeinf` optimized generic on\nthe dead CodeInstance's `owner` and `def` fields to obtain a cured\nCodeInstance (or a user-actionable error from the plugin).\n\nThis PR includes an implementation of `with_new_compiler` from #56650.\nThis PR includes just enough compiler support to make the compiler\noptimize this to the same code that #56650 produced:\n\n```\njulia\u0026gt; @code_typed with_new_compiler(sin, 1.0)\nCodeInfo(\n1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64\n│ %2 = builtin Core.getfield(args, 1)::Float64\n│ %3 = invoke sin(%2::Float64)::Float64\n└── return %3\n) =\u0026gt; Float64\n```\n\nHowever, the implementation here is extremely incomplete. I'm putting it\nup only as a directional sketch to see if people prefer it over #56650.\nIf so, I would prepare a cleaned up version of this PR that has the\noptimized generics as well as the curing support, but not the full\ninference integration (which needs a fair bit more work).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07\"\u003eto accept CodeInstance (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2685699746\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56660\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56660/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56660\"\u003e#56660\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Extend `invoke` to accept CodeInstance (#56660)\n\nThis is an alternative mechanism to #56650 that largely achieves the\nsame result, but by hooking into `invoke` rather than a generated\nfunction. They are orthogonal mechanisms, and its possible we want both.\nHowever, in #56650, both Jameson and Valentin were skeptical of the\ngenerated function signature bottleneck. This PR is sort of a hybrid of\nmechanism in #52964 and what I proposed in\nhttps://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877.\n\nIn particular, this PR:\n\n1. Extends `invoke` to support a CodeInstance in place of its usual\n`types` argument.\n\n2. Adds a new `typeinf` optimized generic. The semantics of this\noptimized generic allow the compiler to instead call a companion\n`typeinf_edge` function, allowing a mid-inference interpreter switch\n(like #52964), without being forced through a concrete signature\nbottleneck. However, if calling `typeinf_edge` does not work (e.g.\nbecause the compiler version is mismatched), this still has well defined\nsemantics, you just don't get inference support.\n\nThe additional benefit of the `typeinf` optimized generic is that it\nlets custom cache owners tell the runtime how to \u0026quot;cure\u0026quot; code instances\nthat have lost their native code. Currently the runtime only knows how\nto do that for `owner == nothing` CodeInstances (by re-running\ninference). This extension is not implemented, but the idea is that the\nruntime would be permitted to call the `typeinf` optimized generic on\nthe dead CodeInstance's `owner` and `def` fields to obtain a cured\nCodeInstance (or a user-actionable error from the plugin).\n\nThis PR includes an implementation of `with_new_compiler` from #56650.\nThis PR includes just enough compiler support to make the compiler\noptimize this to the same code that #56650 produced:\n\n```\njulia\u0026gt; @code_typed with_new_compiler(sin, 1.0)\nCodeInfo(\n1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64\n│ %2 = builtin Core.getfield(args, 1)::Float64\n│ %3 = invoke sin(%2::Float64)::Float64\n└── return %3\n) =\u0026gt; Float64\n```\n\nHowever, the implementation here is extremely incomplete. I'm putting it\nup only as a directional sketch to see if people prefer it over #56650.\nIf so, I would prepare a cleaned up version of this PR that has the\noptimized generics as well as the curing support, but not the full\ninference integration (which needs a fair bit more work).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07\"\u003e)\u003c/a\u003e","bodyMessageHtml":"This is an alternative mechanism to \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2682549122\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56650\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56650/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56650\"\u003e#56650\u003c/a\u003e that largely achieves the\nsame result, but by hooking into `invoke` rather than a generated\nfunction. They are orthogonal mechanisms, and its possible we want both.\nHowever, in \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2682549122\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56650\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56650/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56650\"\u003e#56650\u003c/a\u003e, both Jameson and Valentin were skeptical of the\ngenerated function signature bottleneck. This PR is sort of a hybrid of\nmechanism in \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2088631847\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/52964\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/52964/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/52964\"\u003e#52964\u003c/a\u003e and what I proposed in\n\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2682549122\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56650\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56650/hovercard?comment_id=2493800877\u0026amp;comment_type=issue_comment\" href=\"https://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877\"\u003e#56650 (comment)\u003c/a\u003e.\n\nIn particular, this PR:\n\n1. Extends `invoke` to support a CodeInstance in place of its usual\n`types` argument.\n\n2. Adds a new `typeinf` optimized generic. The semantics of this\noptimized generic allow the compiler to instead call a companion\n`typeinf_edge` function, allowing a mid-inference interpreter switch\n(like \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2088631847\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/52964\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/52964/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/52964\"\u003e#52964\u003c/a\u003e), without being forced through a concrete signature\nbottleneck. However, if calling `typeinf_edge` does not work (e.g.\nbecause the compiler version is mismatched), this still has well defined\nsemantics, you just don't get inference support.\n\nThe additional benefit of the `typeinf` optimized generic is that it\nlets custom cache owners tell the runtime how to \"cure\" code instances\nthat have lost their native code. Currently the runtime only knows how\nto do that for `owner == nothing` CodeInstances (by re-running\ninference). This extension is not implemented, but the idea is that the\nruntime would be permitted to call the `typeinf` optimized generic on\nthe dead CodeInstance's `owner` and `def` fields to obtain a cured\nCodeInstance (or a user-actionable error from the plugin).\n\nThis PR includes an implementation of `with_new_compiler` from \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2682549122\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56650\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56650/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56650\"\u003e#56650\u003c/a\u003e.\nThis PR includes just enough compiler support to make the compiler\noptimize this to the same code that \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2682549122\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56650\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56650/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56650\"\u003e#56650\u003c/a\u003e produced:\n\n```\njulia\u0026gt; @code_typed with_new_compiler(sin, 1.0)\nCodeInfo(\n1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64\n│ %2 = builtin Core.getfield(args, 1)::Float64\n│ %3 = invoke sin(%2::Float64)::Float64\n└── return %3\n) =\u0026gt; Float64\n```\n\nHowever, the implementation here is extremely incomplete. I'm putting it\nup only as a directional sketch to see if people prefer it over \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2682549122\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56650\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56650/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56650\"\u003e#56650\u003c/a\u003e.\nIf so, I would prepare a cleaned up version of this PR that has the\noptimized generics as well as the curing support, but not the full\ninference integration (which needs a fair bit more work).","authors":[{"login":"Keno","displayName":"Keno Fischer","avatarUrl":"https://avatars.githubusercontent.com/u/1291671?v=4","path":"/Keno","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Dec 2, 2024","commits":[{"oid":"8ce7d0fce419746e36556d561fe7d1c89704e291","url":"/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291","authoredDate":"2024-12-02T11:13:51.000-04:00","committedDate":"2024-12-02T16:13:51.000+01:00","shortMessage":"[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (#56722)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (#56722)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291\"\u003e[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2707917090\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56722\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56722/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56722\"\u003e#56722\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (#56722)\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291\"\u003e)\u003c/a\u003e","bodyMessageHtml":"","authors":[{"login":"christiangnrd","displayName":"Christian Guinard","avatarUrl":"https://avatars.githubusercontent.com/u/28689358?v=4","path":"/christiangnrd","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 28, 2024","commits":[{"oid":"79d8d3f764e7fde6da323d1063293855612691fd","url":"/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd","authoredDate":"2024-11-27T22:13:34.000-05:00","committedDate":"2024-11-27T22:13:34.000-05:00","shortMessage":"support passing a specific Method to invoke (#56692)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"support passing a specific Method to invoke (#56692)\n\nCo-authored-by: Mosè Giordano \u0026lt;765740+giordano@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd\"\u003esupport passing a specific Method to invoke (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2696558723\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56692\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56692/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56692\"\u003e#56692\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"support passing a specific Method to invoke (#56692)\n\nCo-authored-by: Mosè Giordano \u0026lt;765740+giordano@users.noreply.github.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Co-authored-by: Mosè Giordano \u0026lt;765740+giordano@users.noreply.github.com\u0026gt;","authors":[{"login":"vtjnash","displayName":"Jameson Nash","avatarUrl":"https://avatars.githubusercontent.com/u/330950?v=4","path":"/vtjnash","isGitHub":false},{"login":"giordano","displayName":"Mosè Giordano","avatarUrl":"https://avatars.githubusercontent.com/u/765740?v=4","path":"/giordano","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 11, 2024","commits":[{"oid":"38e3d1433a2401a05342ee55c3f1c7373ae2168a","url":"/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a","authoredDate":"2024-11-11T17:17:36.000+05:30","committedDate":"2024-11-11T17:17:36.000+05:30","shortMessage":"Add `diagview` to obtain a view along a diagonal (#56175)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add `diagview` to obtain a view along a diagonal (#56175)\n\nA function to obtain a view of a diagonal of a matrix is useful, and\nthis is clearly being used widely within `LinearAlgebra`.\n\nThe implementation here iterates according to the `IndexStyle` of the\narray:\n```julia\njulia\u0026gt; using LinearAlgebra\n\njulia\u0026gt; A = reshape(1:9, 3, 3)\n3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:\n 1 4 7\n 2 5 8\n 3 6 9\n\njulia\u0026gt; diagview(A,1)\n2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64:\n 4\n 8\n\njulia\u0026gt; T = Tridiagonal(1:3, 3:6, 4:6)\n4×4 Tridiagonal{Int64, UnitRange{Int64}}:\n 3 4 ⋅ ⋅\n 1 4 5 ⋅\n ⋅ 2 5 6\n ⋅ ⋅ 3 6\n\njulia\u0026gt; diagview(T,1)\n3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64:\n 4\n 5\n 6\n```\n\nCloses https://github.com/JuliaLang/julia/issues/30250\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a\"\u003eAdd\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Add `diagview` to obtain a view along a diagonal (#56175)\n\nA function to obtain a view of a diagonal of a matrix is useful, and\nthis is clearly being used widely within `LinearAlgebra`.\n\nThe implementation here iterates according to the `IndexStyle` of the\narray:\n```julia\njulia\u0026gt; using LinearAlgebra\n\njulia\u0026gt; A = reshape(1:9, 3, 3)\n3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:\n 1 4 7\n 2 5 8\n 3 6 9\n\njulia\u0026gt; diagview(A,1)\n2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64:\n 4\n 8\n\njulia\u0026gt; T = Tridiagonal(1:3, 3:6, 4:6)\n4×4 Tridiagonal{Int64, UnitRange{Int64}}:\n 3 4 ⋅ ⋅\n 1 4 5 ⋅\n ⋅ 2 5 6\n ⋅ ⋅ 3 6\n\njulia\u0026gt; diagview(T,1)\n3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64:\n 4\n 5\n 6\n```\n\nCloses https://github.com/JuliaLang/julia/issues/30250\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a\"\u003ediagview\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Add `diagview` to obtain a view along a diagonal (#56175)\n\nA function to obtain a view of a diagonal of a matrix is useful, and\nthis is clearly being used widely within `LinearAlgebra`.\n\nThe implementation here iterates according to the `IndexStyle` of the\narray:\n```julia\njulia\u0026gt; using LinearAlgebra\n\njulia\u0026gt; A = reshape(1:9, 3, 3)\n3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:\n 1 4 7\n 2 5 8\n 3 6 9\n\njulia\u0026gt; diagview(A,1)\n2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64:\n 4\n 8\n\njulia\u0026gt; T = Tridiagonal(1:3, 3:6, 4:6)\n4×4 Tridiagonal{Int64, UnitRange{Int64}}:\n 3 4 ⋅ ⋅\n 1 4 5 ⋅\n ⋅ 2 5 6\n ⋅ ⋅ 3 6\n\njulia\u0026gt; diagview(T,1)\n3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64:\n 4\n 5\n 6\n```\n\nCloses https://github.com/JuliaLang/julia/issues/30250\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a\"\u003eto obtain a view along a diagonal (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2588911103\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56175\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56175/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56175\"\u003e#56175\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add `diagview` to obtain a view along a diagonal (#56175)\n\nA function to obtain a view of a diagonal of a matrix is useful, and\nthis is clearly being used widely within `LinearAlgebra`.\n\nThe implementation here iterates according to the `IndexStyle` of the\narray:\n```julia\njulia\u0026gt; using LinearAlgebra\n\njulia\u0026gt; A = reshape(1:9, 3, 3)\n3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:\n 1 4 7\n 2 5 8\n 3 6 9\n\njulia\u0026gt; diagview(A,1)\n2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64:\n 4\n 8\n\njulia\u0026gt; T = Tridiagonal(1:3, 3:6, 4:6)\n4×4 Tridiagonal{Int64, UnitRange{Int64}}:\n 3 4 ⋅ ⋅\n 1 4 5 ⋅\n ⋅ 2 5 6\n ⋅ ⋅ 3 6\n\njulia\u0026gt; diagview(T,1)\n3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64:\n 4\n 5\n 6\n```\n\nCloses https://github.com/JuliaLang/julia/issues/30250\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a\"\u003e)\u003c/a\u003e","bodyMessageHtml":"A function to obtain a view of a diagonal of a matrix is useful, and\nthis is clearly being used widely within `LinearAlgebra`.\n\nThe implementation here iterates according to the `IndexStyle` of the\narray:\n```julia\njulia\u0026gt; using LinearAlgebra\n\njulia\u0026gt; A = reshape(1:9, 3, 3)\n3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:\n 1 4 7\n 2 5 8\n 3 6 9\n\njulia\u0026gt; diagview(A,1)\n2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64:\n 4\n 8\n\njulia\u0026gt; T = Tridiagonal(1:3, 3:6, 4:6)\n4×4 Tridiagonal{Int64, UnitRange{Int64}}:\n 3 4 ⋅ ⋅\n 1 4 5 ⋅\n ⋅ 2 5 6\n ⋅ ⋅ 3 6\n\njulia\u0026gt; diagview(T,1)\n3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64:\n 4\n 5\n 6\n```\n\n\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #30250.\"\u003eCloses\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"386994507\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/30250\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/30250/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/30250\"\u003e#30250\u003c/a\u003e","authors":[{"login":"jishnub","displayName":"Jishnu Bhattacharya","avatarUrl":"https://avatars.githubusercontent.com/u/10461665?v=4","path":"/jishnub","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 8, 2024","commits":[{"oid":"bb234e2f71448e5d163f5d5e4c7680d32313448b","url":"/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b","authoredDate":"2024-11-08T14:58:37.000+01:00","committedDate":"2024-11-08T08:58:37.000-05:00","shortMessage":"NEWS.md: clarify `--trim` (#56460)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"NEWS.md: clarify `--trim` (#56460)\n\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b\"\u003eNEWS.md: clarify\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"NEWS.md: clarify `--trim` (#56460)\n\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b\"\u003e--trim\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"NEWS.md: clarify `--trim` (#56460)\n\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b\"\u003e(\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2635408325\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56460\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56460/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56460\"\u003e#56460\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"NEWS.md: clarify `--trim` (#56460)\n\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Co-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;","authors":[{"login":"lassepe","displayName":"Lasse Peters","avatarUrl":"https://avatars.githubusercontent.com/u/10076790?v=4","path":"/lassepe","isGitHub":false},{"login":"mbauman","displayName":"Matt Bauman","avatarUrl":"https://avatars.githubusercontent.com/u/154641?v=4","path":"/mbauman","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Nov 1, 2024","commits":[{"oid":"706a4f6c5d159366bed25e8217ce80748e3963fa","url":"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa","authoredDate":"2024-11-01T06:13:06.000Z","committedDate":"2024-11-01T14:13:06.000+08:00","shortMessage":"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)\n\nFollow up to #53742, but for the build system. CC: @omus.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa\"\u003eMake build system respect\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)\n\nFollow up to #53742, but for the build system. CC: @omus.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa\"\u003eFORCE_COLOR\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)\n\nFollow up to #53742, but for the build system. CC: @omus.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa\"\u003eand\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)\n\nFollow up to #53742, but for the build system. CC: @omus.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa\"\u003eNO_COLOR\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)\n\nFollow up to #53742, but for the build system. CC: @omus.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa\"\u003esettings (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2615777943\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56346\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56346/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56346\"\u003e#56346\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346)\n\nFollow up to #53742, but for the build system. CC: @omus.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa\"\u003e)\u003c/a\u003e","bodyMessageHtml":"Follow up to \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2187705586\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/53742\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/53742/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/53742\"\u003e#53742\u003c/a\u003e, but for the build system. CC: \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/omus/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/omus\"\u003e@omus\u003c/a\u003e.","authors":[{"login":"giordano","displayName":"Mosè Giordano","avatarUrl":"https://avatars.githubusercontent.com/u/765740?v=4","path":"/giordano","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Oct 27, 2024","commits":[{"oid":"fcf7ec081509c62967122e0949640e63a3d07571","url":"/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571","authoredDate":"2024-10-27T07:59:28.000+05:30","committedDate":"2024-10-27T07:59:28.000+05:30","shortMessage":"Make `LinearAlgebra.haszero` public (#56223)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Make `LinearAlgebra.haszero` public (#56223)\n\nThe trait `haszero` is used to check if a type `T` has a unique zero\ndefined using `zero(T)`. This lets us dispatch to optimized paths\nwithout losing generality. This PR makes the function public so that\nthis may be extended by packages (such as `StaticArrays`).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571\"\u003eMake\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Make `LinearAlgebra.haszero` public (#56223)\n\nThe trait `haszero` is used to check if a type `T` has a unique zero\ndefined using `zero(T)`. This lets us dispatch to optimized paths\nwithout losing generality. This PR makes the function public so that\nthis may be extended by packages (such as `StaticArrays`).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571\"\u003eLinearAlgebra.haszero\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Make `LinearAlgebra.haszero` public (#56223)\n\nThe trait `haszero` is used to check if a type `T` has a unique zero\ndefined using `zero(T)`. This lets us dispatch to optimized paths\nwithout losing generality. This PR makes the function public so that\nthis may be extended by packages (such as `StaticArrays`).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571\"\u003epublic (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2596815353\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56223\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56223/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56223\"\u003e#56223\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Make `LinearAlgebra.haszero` public (#56223)\n\nThe trait `haszero` is used to check if a type `T` has a unique zero\ndefined using `zero(T)`. This lets us dispatch to optimized paths\nwithout losing generality. This PR makes the function public so that\nthis may be extended by packages (such as `StaticArrays`).\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571\"\u003e)\u003c/a\u003e","bodyMessageHtml":"The trait `haszero` is used to check if a type `T` has a unique zero\ndefined using `zero(T)`. This lets us dispatch to optimized paths\nwithout losing generality. This PR makes the function public so that\nthis may be extended by packages (such as `StaticArrays`).","authors":[{"login":"jishnub","displayName":"Jishnu Bhattacharya","avatarUrl":"https://avatars.githubusercontent.com/u/10461665?v=4","path":"/jishnub","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Oct 25, 2024","commits":[{"oid":"f6a38e00c009292e2b2730758bb99a154809c413","url":"/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413","authoredDate":"2024-10-25T19:51:27.000-03:00","committedDate":"2024-10-25T19:51:27.000-03:00","shortMessage":"Wall-time/all tasks profiler (#55889)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Wall-time/all tasks profiler (#55889)\n\nOne limitation of sampling CPU/thread profiles, as is currently done in\r\nJulia, is that they primarily capture samples from CPU-intensive tasks.\r\n\r\nIf many tasks are performing IO or contending for concurrency primitives\r\nlike semaphores, these tasks won’t appear in the profile, as they aren't\r\nscheduled on OS threads sampled by the profiler.\r\n\r\nA wall-time profiler, like the one implemented in this PR, samples tasks\r\nregardless of OS thread scheduling. This enables profiling of IO-heavy\r\ntasks and detecting areas of heavy contention in the system.\r\n\r\nCo-developed with @nickrobinson251.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413\"\u003eWall-time/all tasks profiler (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2550685627\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/55889\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/55889/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/55889\"\u003e#55889\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Wall-time/all tasks profiler (#55889)\n\nOne limitation of sampling CPU/thread profiles, as is currently done in\r\nJulia, is that they primarily capture samples from CPU-intensive tasks.\r\n\r\nIf many tasks are performing IO or contending for concurrency primitives\r\nlike semaphores, these tasks won’t appear in the profile, as they aren't\r\nscheduled on OS threads sampled by the profiler.\r\n\r\nA wall-time profiler, like the one implemented in this PR, samples tasks\r\nregardless of OS thread scheduling. This enables profiling of IO-heavy\r\ntasks and detecting areas of heavy contention in the system.\r\n\r\nCo-developed with @nickrobinson251.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413\"\u003e)\u003c/a\u003e","bodyMessageHtml":"One limitation of sampling CPU/thread profiles, as is currently done in\nJulia, is that they primarily capture samples from CPU-intensive tasks.\n\nIf many tasks are performing IO or contending for concurrency primitives\nlike semaphores, these tasks won’t appear in the profile, as they aren't\nscheduled on OS threads sampled by the profiler.\n\nA wall-time profiler, like the one implemented in this PR, samples tasks\nregardless of OS thread scheduling. This enables profiling of IO-heavy\ntasks and detecting areas of heavy contention in the system.\n\nCo-developed with \u003ca class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/nickrobinson251/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/nickrobinson251\"\u003e@nickrobinson251\u003c/a\u003e.","authors":[{"login":"d-netto","displayName":"Diogo Netto","avatarUrl":"https://avatars.githubusercontent.com/u/61364108?v=4","path":"/d-netto","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"b81e33fe522f8a8f060f885f83944f11192cd0db","url":"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db","authoredDate":"2024-10-25T15:22:00.000+02:00","committedDate":"2024-10-25T09:22:00.000-04:00","shortMessage":"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)\n\nThe discussion here mentions `require_one_based_indexing` being part of\r\nthe public API: https://github.com/JuliaLang/julia/pull/43263\r\n\r\nBoth functions are also documented (albeit in the dev docs): \r\n* `require_one_based_indexing`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\r\n* `has_offset_axes`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\r\n\r\nTowards https://github.com/JuliaLang/julia/issues/51335.\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db\"\u003eMark\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)\n\nThe discussion here mentions `require_one_based_indexing` being part of\r\nthe public API: https://github.com/JuliaLang/julia/pull/43263\r\n\r\nBoth functions are also documented (albeit in the dev docs): \r\n* `require_one_based_indexing`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\r\n* `has_offset_axes`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\r\n\r\nTowards https://github.com/JuliaLang/julia/issues/51335.\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db\"\u003erequire_one_based_indexing\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)\n\nThe discussion here mentions `require_one_based_indexing` being part of\r\nthe public API: https://github.com/JuliaLang/julia/pull/43263\r\n\r\nBoth functions are also documented (albeit in the dev docs): \r\n* `require_one_based_indexing`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\r\n* `has_offset_axes`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\r\n\r\nTowards https://github.com/JuliaLang/julia/issues/51335.\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db\"\u003eand\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)\n\nThe discussion here mentions `require_one_based_indexing` being part of\r\nthe public API: https://github.com/JuliaLang/julia/pull/43263\r\n\r\nBoth functions are also documented (albeit in the dev docs): \r\n* `require_one_based_indexing`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\r\n* `has_offset_axes`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\r\n\r\nTowards https://github.com/JuliaLang/julia/issues/51335.\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db\"\u003ehas_offset_axes\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)\n\nThe discussion here mentions `require_one_based_indexing` being part of\r\nthe public API: https://github.com/JuliaLang/julia/pull/43263\r\n\r\nBoth functions are also documented (albeit in the dev docs): \r\n* `require_one_based_indexing`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\r\n* `has_offset_axes`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\r\n\r\nTowards https://github.com/JuliaLang/julia/issues/51335.\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db\"\u003eas public (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2592167806\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56196\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56196/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56196\"\u003e#56196\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196)\n\nThe discussion here mentions `require_one_based_indexing` being part of\r\nthe public API: https://github.com/JuliaLang/julia/pull/43263\r\n\r\nBoth functions are also documented (albeit in the dev docs): \r\n* `require_one_based_indexing`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\r\n* `has_offset_axes`:\r\nhttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\r\n\r\nTowards https://github.com/JuliaLang/julia/issues/51335.\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db\"\u003e)\u003c/a\u003e","bodyMessageHtml":"The discussion here mentions `require_one_based_indexing` being part of\nthe public API: \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1066911872\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/43263\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/43263/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/43263\"\u003e#43263\u003c/a\u003e\n\nBoth functions are also documented (albeit in the dev docs): \n* `require_one_based_indexing`:\n\u003ca href=\"https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\" rel=\"nofollow\"\u003ehttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices\u003c/a\u003e\n* `has_offset_axes`:\n\u003ca href=\"https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\" rel=\"nofollow\"\u003ehttps://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes\u003c/a\u003e\n\nTowards \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"1898489756\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/51335\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/51335/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/51335\"\u003e#51335\u003c/a\u003e.\n\n---------\n\nCo-authored-by: Matt Bauman \u0026lt;mbauman@gmail.com\u0026gt;","authors":[{"login":"adrhill","displayName":"Adrian Hill","avatarUrl":"https://avatars.githubusercontent.com/u/20258504?v=4","path":"/adrhill","isGitHub":false},{"login":"mbauman","displayName":"Matt Bauman","avatarUrl":"https://avatars.githubusercontent.com/u/154641?v=4","path":"/mbauman","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"b38fde1ad42c977878d4f481c962b108a3ae20ab","url":"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab","authoredDate":"2024-10-25T09:26:36.000+02:00","committedDate":"2024-10-25T09:26:36.000+02:00","shortMessage":"support `isless` for zero-dimensional `AbstractArray`s (#55772)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"support `isless` for zero-dimensional `AbstractArray`s (#55772)\n\nFixes #55771\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab\"\u003esupport\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"support `isless` for zero-dimensional `AbstractArray`s (#55772)\n\nFixes #55771\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab\"\u003eisless\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"support `isless` for zero-dimensional `AbstractArray`s (#55772)\n\nFixes #55771\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab\"\u003efor zero-dimensional\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"support `isless` for zero-dimensional `AbstractArray`s (#55772)\n\nFixes #55771\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab\"\u003eAbstractArray\u003c/a\u003e\u003c/code\u003e\u003ca data-pjax=\"true\" title=\"support `isless` for zero-dimensional `AbstractArray`s (#55772)\n\nFixes #55771\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab\"\u003es (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2525890497\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/55772\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/55772/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/55772\"\u003e#55772\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"support `isless` for zero-dimensional `AbstractArray`s (#55772)\n\nFixes #55771\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab\"\u003e)\u003c/a\u003e","bodyMessageHtml":"\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #55771.\"\u003eFixes\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2525850771\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/55771\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/55771/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/55771\"\u003e#55771\u003c/a\u003e","authors":[{"login":"nsajko","displayName":"Neven Sajko","avatarUrl":"https://avatars.githubusercontent.com/u/4944410?v=4","path":"/nsajko","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Oct 17, 2024","commits":[{"oid":"d36417b8230f7f56359f8607495ec97247bcab50","url":"/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50","authoredDate":"2024-10-17T13:37:06.000-04:00","committedDate":"2024-10-17T13:37:06.000-04:00","shortMessage":"Add a convenience object for expressing once-like / per-runtime patterns (#55793)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add a convenience object for expressing once-like / per-runtime patterns (#55793)\n\nThis adds 3 new types, to conveniently express 3 common concurrent code\r\npatterns:\r\n\r\n - `PerProcess`: an action that must be taken once per process\r\n - `PerThread`: an action that must be taken once per thread id\r\n - `PerTask`: an action that must be take once per task object\r\n\r\nThe PerProcess object should replace `__init__` or similar hand rolled\r\nimplementations of this.\r\nThe PerThread object should replace code that used to use `nthreads()`\r\nto implement a much less correct version of this (though this is not\r\nrecommended in most new code, some foreign libraries may need this to\r\ninteract well with C).\r\nThe PerTask object is simply a thin wrapper over `task_local_storage()`.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50\"\u003eAdd a convenience object for expressing once-like / per-runtime patterns (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2531296063\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/55793\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/55793/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/55793\"\u003e#55793\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add a convenience object for expressing once-like / per-runtime patterns (#55793)\n\nThis adds 3 new types, to conveniently express 3 common concurrent code\r\npatterns:\r\n\r\n - `PerProcess`: an action that must be taken once per process\r\n - `PerThread`: an action that must be taken once per thread id\r\n - `PerTask`: an action that must be take once per task object\r\n\r\nThe PerProcess object should replace `__init__` or similar hand rolled\r\nimplementations of this.\r\nThe PerThread object should replace code that used to use `nthreads()`\r\nto implement a much less correct version of this (though this is not\r\nrecommended in most new code, some foreign libraries may need this to\r\ninteract well with C).\r\nThe PerTask object is simply a thin wrapper over `task_local_storage()`.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50\"\u003e)\u003c/a\u003e","bodyMessageHtml":"This adds 3 new types, to conveniently express 3 common concurrent code\npatterns:\n\n - `PerProcess`: an action that must be taken once per process\n - `PerThread`: an action that must be taken once per thread id\n - `PerTask`: an action that must be take once per task object\n\nThe PerProcess object should replace `__init__` or similar hand rolled\nimplementations of this.\nThe PerThread object should replace code that used to use `nthreads()`\nto implement a much less correct version of this (though this is not\nrecommended in most new code, some foreign libraries may need this to\ninteract well with C).\nThe PerTask object is simply a thin wrapper over `task_local_storage()`.","authors":[{"login":"vtjnash","displayName":"Jameson Nash","avatarUrl":"https://avatars.githubusercontent.com/u/330950?v=4","path":"/vtjnash","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"6b95ac0163e6fa77e5167d33e6d23198a381a630","url":"/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630","authoredDate":"2024-10-17T16:10:50.000+02:00","committedDate":"2024-10-17T10:10:50.000-04:00","shortMessage":"Limit implicit `show` in REPL to printing 20 KiB by default (#53959)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Limit implicit `show` in REPL to printing 20 KiB by default (#53959)\n\ncloses https://github.com/JuliaLang/julia/issues/40735\r\n\r\n---------\r\n\r\nCo-authored-by: Jameson Nash \u0026lt;vtjnash@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630\"\u003eLimit implicit\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Limit implicit `show` in REPL to printing 20 KiB by default (#53959)\n\ncloses https://github.com/JuliaLang/julia/issues/40735\r\n\r\n---------\r\n\r\nCo-authored-by: Jameson Nash \u0026lt;vtjnash@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630\"\u003eshow\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Limit implicit `show` in REPL to printing 20 KiB by default (#53959)\n\ncloses https://github.com/JuliaLang/julia/issues/40735\r\n\r\n---------\r\n\r\nCo-authored-by: Jameson Nash \u0026lt;vtjnash@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630\"\u003ein REPL to printing 20 KiB by default (\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2226664056\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/53959\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/53959/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/53959\"\u003e#53959\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Limit implicit `show` in REPL to printing 20 KiB by default (#53959)\n\ncloses https://github.com/JuliaLang/julia/issues/40735\r\n\r\n---------\r\n\r\nCo-authored-by: Jameson Nash \u0026lt;vtjnash@gmail.com\u0026gt;\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630\"\u003e)\u003c/a\u003e","bodyMessageHtml":"\u003cspan class=\"issue-keyword tooltipped tooltipped-se\" aria-label=\"This commit closes issue #40735.\"\u003ecloses\u003c/span\u003e \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"877587179\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/40735\" data-hovercard-type=\"issue\" data-hovercard-url=\"/JuliaLang/julia/issues/40735/hovercard\" href=\"https://github.com/JuliaLang/julia/issues/40735\"\u003e#40735\u003c/a\u003e\n\n---------\n\nCo-authored-by: Jameson Nash \u0026lt;vtjnash@gmail.com\u0026gt;","authors":[{"login":"ericphanson","displayName":"Eric Hanson","avatarUrl":"https://avatars.githubusercontent.com/u/5846501?v=4","path":"/ericphanson","isGitHub":false},{"login":"vtjnash","displayName":"Jameson Nash","avatarUrl":"https://avatars.githubusercontent.com/u/330950?v=4","path":"/vtjnash","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}},{"oid":"4329422fac14ae4daf0a2fd3c71fe4e0df169899","url":"/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899","authoredDate":"2024-10-17T17:56:11.000+05:30","committedDate":"2024-10-17T17:56:11.000+05:30","shortMessage":"Add news entry for `matprod_dest` (#56160)","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"Add news entry for `matprod_dest` (#56160)\n\nThis was missed out in https://github.com/JuliaLang/julia/pull/55537\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899\"\u003eAdd news entry for\u003c/a\u003e \u003ccode\u003e\u003ca data-pjax=\"true\" title=\"Add news entry for `matprod_dest` (#56160)\n\nThis was missed out in https://github.com/JuliaLang/julia/pull/55537\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899\"\u003ematprod_dest\u003c/a\u003e\u003c/code\u003e \u003ca data-pjax=\"true\" title=\"Add news entry for `matprod_dest` (#56160)\n\nThis was missed out in https://github.com/JuliaLang/julia/pull/55537\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899\"\u003e(\u003c/a\u003e\u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2586212855\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/56160\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/56160/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/56160\"\u003e#56160\u003c/a\u003e\u003ca data-pjax=\"true\" title=\"Add news entry for `matprod_dest` (#56160)\n\nThis was missed out in https://github.com/JuliaLang/julia/pull/55537\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899\"\u003e)\u003c/a\u003e","bodyMessageHtml":"This was missed out in \u003ca class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2475232575\" data-permission-text=\"Title is private\" data-url=\"https://github.com/JuliaLang/julia/issues/55537\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/JuliaLang/julia/pull/55537/hovercard\" href=\"https://github.com/JuliaLang/julia/pull/55537\"\u003e#55537\u003c/a\u003e","authors":[{"login":"jishnub","displayName":"Jishnu Bhattacharya","avatarUrl":"https://avatars.githubusercontent.com/u/10461665?v=4","path":"/jishnub","isGitHub":false}],"committerAttribution":false,"committer":{"login":"web-flow","displayName":"GitHub","avatarUrl":"https://avatars.githubusercontent.com/u/19864447?v=4","path":"/web-flow","isGitHub":true}}]},{"title":"Oct 15, 2024","commits":[{"oid":"dbbd4d96fd560b41db2324ee31fd37eb734fa39e","url":"/JuliaLang/julia/commit/dbbd4d96fd560b41db2324ee31fd37eb734fa39e","authoredDate":"2024-09-17T10:03:19.000-04:00","committedDate":"2024-10-15T17:02:18.000Z","shortMessage":"improve OncePer implementation","shortMessageMarkdown":null,"shortMessageMarkdownLink":"\u003ca data-pjax=\"true\" title=\"improve OncePer implementation\n\nAddress reviewer feedback, add more fixes and more tests,\nrename to add Once prefix.\" class=\"color-fg-default\" href=\"/JuliaLang/julia/commit/dbbd4d96fd560b41db2324ee31fd37eb734fa39e\"\u003eimprove OncePer implementation\u003c/a\u003e","bodyMessageHtml":"Address reviewer feedback, add more fixes and more tests,\nrename to add Once prefix.","authors":[{"login":"vtjnash","displayName":"Jameson Nash","avatarUrl":"https://avatars.githubusercontent.com/u/330950?v=4","path":"/vtjnash","isGitHub":false}],"committerAttribution":false,"committer":{"login":"vtjnash","displayName":"Jameson Nash","avatarUrl":"https://avatars.githubusercontent.com/u/330950?v=4","path":"/vtjnash","isGitHub":false}}]}],"currentCommit":{"oid":"13311f324e850fefddfcdf43d6c93b9365e2cf46"},"filters":{"since":null,"until":null,"author":null,"newPath":null,"originalBranch":null,"currentBlobPath":"NEWS.md","pagination":{"startCursor":"13311f324e850fefddfcdf43d6c93b9365e2cf46 0","endCursor":"13311f324e850fefddfcdf43d6c93b9365e2cf46 34","hasNextPage":true,"hasPreviousPage":false}},"metadata":{"browsingRenameHistory":null,"showProfileHelp":false,"deferredDataUrl":"/JuliaLang/julia/commits/deferred_commit_data/master?original_branch=master\u0026path=NEWS.md","deferredContributorUrl":"/JuliaLang/julia/commits/deferred_commit_contributors","softNavToCommit":true},"repo":{"id":1644196,"defaultBranch":"master","name":"julia","ownerLogin":"JuliaLang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2011-04-21T07:01:50.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/743164?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"master","listCacheKey":"v0:1743494198.0","refType":"branch","currentOid":"13311f324e850fefddfcdf43d6c93b9365e2cf46"},"timedOutMessage":""},"title":"History for NEWS.md - JuliaLang/julia","appPayload":{"helpUrl":"https://docs.github.com","enabled_features":{"commits_ux_refresh_compare":false}}}</script> <div data-target="react-app.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.fDhSWy{margin-bottom:16px;}/*!sc*/ .bxASBd{white-space:normal;font-weight:600;}/*!sc*/ .dGVxWp{max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .korYvE{padding-top:0;padding-bottom:4px;}/*!sc*/ .bTxOwE{background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));}/*!sc*/ .dpBUfI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ @media screen and (min-width:544px){.dpBUfI{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/ @media screen and (min-width:768px){.dpBUfI{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/ @media screen and (min-width:1012px){.dpBUfI{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .iCHGgS{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:4px;}/*!sc*/ .jRhDJg{font-weight:400;white-space:nowrap;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jRhDJg:hover{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .irPhWZ{width:60px;}/*!sc*/ .fIQuDd{width:20px;}/*!sc*/ .dNbsEP{width:62px;}/*!sc*/ .gPcybk[data-size="small"][data-no-visuals]{font-family:var(--fontStack-monospace);color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .cnGFCU{padding-top:4px;padding-bottom:4px;}/*!sc*/ .hKWjvQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .bbHsCC{width:16px;height:16px;margin-right:8px;margin-top:-1px;margin-left:1px;}/*!sc*/ .fmQaBv{margin-left:4px;margin-right:4px;}/*!sc*/ .cQAMJB[data-size="medium"][data-no-visuals]{background-color:transparent;border:none;cursor:default;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));font-weight:400;}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"fDhSWy,bxASBd,dGVxWp,korYvE,bTxOwE,dpBUfI,iCHGgS,jRhDJg,irPhWZ,fIQuDd,dNbsEP,gPcybk,gUkoLg,cnGFCU,hKWjvQ,bbHsCC,fmQaBv,cQAMJB,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g16[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .WGJwj{margin-top:2px;margin-bottom:2px;}/*!sc*/ data-styled.g59[id="Octicon-sc-9kayk9-0"]{content:"WGJwj,"}/*!sc*/ .irithh{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:60px;}/*!sc*/ .irithh::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ .irOdmh{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:20px;}/*!sc*/ .irOdmh::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ .ihfxfT{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:62px;}/*!sc*/ .ihfxfT::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ data-styled.g65[id="LoadingSkeleton-sc-695d630a-0"]{content:"irithh,irOdmh,ihfxfT,"}/*!sc*/ @-webkit-keyframes crVFvv{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}50%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}100%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}}/*!sc*/ @keyframes crVFvv{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}50%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}100%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}}/*!sc*/ data-styled.g119[id="sc-keyframes-crVFvv"]{content:"crVFvv,"}/*!sc*/ </style> <!-- --> <div style="--sticky-pane-height:100vh;--spacing:var(--spacing-normal)" class="Box-sc-g0xbh4-0 prc-PageLayout-PageLayoutRoot-1zlEO"><div class="Box-sc-g0xbh4-0 prc-PageLayout-PageLayoutWrapper-s2ao4" data-width="xlarge"><header style="--spacing:var(--spacing-none)" class="Box-sc-g0xbh4-0 fDhSWy prc-PageLayout-Header-mQXK1"><div class="Box-sc-g0xbh4-0 prc-PageLayout-HeaderContent-dVIQb" style="--spacing:var(--spacing-none)"><div class="d-flex flex-items-center flex-justify-between"><h1 class="f2 text-normal pb-2 prc-Heading-Heading-6CmGO" id="commits-pagehead">Commits</h1></div></div><div class="Box-sc-g0xbh4-0 prc-PageLayout-HorizontalDivider-CYLp5 prc-PageLayout-HeaderHorizontalDivider-bofyb" data-variant="line" style="--spacing-divider:var(--spacing-normal);--spacing:var(--spacing-none)"></div></header><div class="Box-sc-g0xbh4-0 prc-PageLayout-PageLayoutContent-jzDMn"><div class="Box-sc-g0xbh4-0 prc-PageLayout-ContentWrapper-b-QRo" data-is-hidden="false"><div class="Box-sc-g0xbh4-0"></div><div class="Box-sc-g0xbh4-0 prc-PageLayout-Content--F7-I" data-width="full" style="--spacing:var(--spacing-none)"><div><div class="mb-3 prc-Stack-Stack-WJVsK" data-gap="condensed" data-direction="horizontal" data-align="stretch" data-wrap="nowrap" data-justify="space-between" data-padding="none"><div class="d-flex flex-items-center"><div class="d-flex flex-items-baseline flex-column flex-sm-row"><h2 class="sr-only prc-Heading-Heading-6CmGO">Breadcrumbs</h2><span class="fgColor-default no-wrap">History for</span><nav class="ml-1 prc-Breadcrumbs-BreadcrumbsBase-6gqOz" aria-label="Breadcrumbs"><ol class="prc-Breadcrumbs-BreadcrumbsList-K7eeK"><li class="prc-Breadcrumbs-ItemWrapper-Mfwuj"><a class="prc-Breadcrumbs-Item-7BKO-" href="/JuliaLang/julia/commits">julia</a></li><li class="prc-Breadcrumbs-ItemWrapper-Mfwuj"><a class="Box-sc-g0xbh4-0 bxASBd selected prc-Breadcrumbs-Item-7BKO- prc-Breadcrumbs-ItemSelected-9ZYcW" aria-current="page" href="/JuliaLang/julia/commits/master/NEWS.md">NEWS.md</a></li></ol></nav><div class="no-wrap"><span class="mr-2 ml-0 ml-sm-2 fgColor-default">on</span><a href="/JuliaLang/julia/tree/master" class="prc-BranchName-BranchName-jFtg-">master</a></div></div></div><div class="d-flex flex-column flex-sm-row gap-2"><h2 class="sr-only prc-Heading-Heading-6CmGO">User selector</h2><div><button type="button" data-testid="user-selector-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="default" aria-describedby=":R1crab:-loading-announcement" id=":R1crab:"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="d-flex"><div class="mr-2"><svg aria-hidden="true" focusable="false" class="octicon octicon-people fgColor-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div><div class="Box-sc-g0xbh4-0 dGVxWp"><span>All users</span></div></div></span></span><span data-component="trailingAction" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></span></button></div><!--$--><h2 class="sr-only prc-Heading-Heading-6CmGO">Datepicker</h2><button type="button" aria-haspopup="true" tabindex="0" data-testid="date-picker-commits" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="default" aria-describedby=":Rlsrab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-calendar Octicon-sc-9kayk9-0 WGJwj fgColor-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4.75 0a.75.75 0 0 1 .75.75V2h5V.75a.75.75 0 0 1 1.5 0V2h1.25c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V3.75C1 2.784 1.784 2 2.75 2H4V.75A.75.75 0 0 1 4.75 0ZM2.5 7.5v6.75c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V7.5Zm10.75-4H2.75a.25.25 0 0 0-.25.25V6h11V3.75a.25.25 0 0 0-.25-.25Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">All time</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></span></span></button><!--/$--></div></div><div class="mb-3" data-hpc="true"><h2 class="sr-only prc-Heading-Heading-6CmGO">Commit History</h2><div class="prc-Timeline-Timeline-iQjcc" data-clip-sidebar=""><div style="display:contents"><div class="Box-sc-g0xbh4-0 korYvE Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rt5rab:" data-testid="commit-group-title">Commits on Apr 1, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ragt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rt5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ragt5rab:-list-view-node-:Rfqgt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add `AbstractOneTo` and have `OneTo` be its subtype (#56902) Currently, `Base` defines `similar` for `Base.OneTo`, with the understanding that offset axes will be handled elsewhere. However, `Base.OneTo` is just one possible one-based range, and there are others such as `StaticArrays.SOneTo` that exist in the ecosystem. `Base` doesn't provide a method to handle a combination of different one-based ranges in `similar`, which leaves the packages in an awkward position: they need to define methods like ```julia similar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape)) ``` where `HeterogeneousShapeTuple` is defined as ```julia Tuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}} ``` https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146 Unfortunately, such methods are borderline type-piracy, as noted in https://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In particular, if the narrower `Base` method that handles `Union{Integer, OneTo}` is removed, then this method explicitly becomes pirating. A solution to this situation is to have `Base` handle all one-based ranges, such that arbitrary combinations of one-based ranges hit fallback methods in `Base`. This PR is a first step in this direction. We add the abstract type `AbstractOneTo`, and have `OneTo` be its subtype. We also add methods to `similar` and `reshape` that accept `AbstractOneTo` arguments. This makes it unnecessary for packages to dispatch on awkward combinations of `Union{Integer, OneTo}` and custom one-based axes, as the base implementation would handle such cases already. There may be other methods that accept an `AbstractOneTo` instead of a `OneTo`, but these may be addressed in separate PRs. Also, there may be one-based ranges that can't subtype `AbstractOneTo`, and a full solution that accepts such ranges as well needs to be implemented through a trait. This may also be handled in a separate PR. --------- Co-authored-by: Tim Holy &lt;tim.holy@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e">Add</a> <code><a data-pjax="true" title="Add `AbstractOneTo` and have `OneTo` be its subtype (#56902) Currently, `Base` defines `similar` for `Base.OneTo`, with the understanding that offset axes will be handled elsewhere. However, `Base.OneTo` is just one possible one-based range, and there are others such as `StaticArrays.SOneTo` that exist in the ecosystem. `Base` doesn't provide a method to handle a combination of different one-based ranges in `similar`, which leaves the packages in an awkward position: they need to define methods like ```julia similar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape)) ``` where `HeterogeneousShapeTuple` is defined as ```julia Tuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}} ``` https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146 Unfortunately, such methods are borderline type-piracy, as noted in https://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In particular, if the narrower `Base` method that handles `Union{Integer, OneTo}` is removed, then this method explicitly becomes pirating. A solution to this situation is to have `Base` handle all one-based ranges, such that arbitrary combinations of one-based ranges hit fallback methods in `Base`. This PR is a first step in this direction. We add the abstract type `AbstractOneTo`, and have `OneTo` be its subtype. We also add methods to `similar` and `reshape` that accept `AbstractOneTo` arguments. This makes it unnecessary for packages to dispatch on awkward combinations of `Union{Integer, OneTo}` and custom one-based axes, as the base implementation would handle such cases already. There may be other methods that accept an `AbstractOneTo` instead of a `OneTo`, but these may be addressed in separate PRs. Also, there may be one-based ranges that can't subtype `AbstractOneTo`, and a full solution that accepts such ranges as well needs to be implemented through a trait. This may also be handled in a separate PR. --------- Co-authored-by: Tim Holy &lt;tim.holy@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e">AbstractOneTo</a></code> <a data-pjax="true" title="Add `AbstractOneTo` and have `OneTo` be its subtype (#56902) Currently, `Base` defines `similar` for `Base.OneTo`, with the understanding that offset axes will be handled elsewhere. However, `Base.OneTo` is just one possible one-based range, and there are others such as `StaticArrays.SOneTo` that exist in the ecosystem. `Base` doesn't provide a method to handle a combination of different one-based ranges in `similar`, which leaves the packages in an awkward position: they need to define methods like ```julia similar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape)) ``` where `HeterogeneousShapeTuple` is defined as ```julia Tuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}} ``` https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146 Unfortunately, such methods are borderline type-piracy, as noted in https://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In particular, if the narrower `Base` method that handles `Union{Integer, OneTo}` is removed, then this method explicitly becomes pirating. A solution to this situation is to have `Base` handle all one-based ranges, such that arbitrary combinations of one-based ranges hit fallback methods in `Base`. This PR is a first step in this direction. We add the abstract type `AbstractOneTo`, and have `OneTo` be its subtype. We also add methods to `similar` and `reshape` that accept `AbstractOneTo` arguments. This makes it unnecessary for packages to dispatch on awkward combinations of `Union{Integer, OneTo}` and custom one-based axes, as the base implementation would handle such cases already. There may be other methods that accept an `AbstractOneTo` instead of a `OneTo`, but these may be addressed in separate PRs. Also, there may be one-based ranges that can't subtype `AbstractOneTo`, and a full solution that accepts such ranges as well needs to be implemented through a trait. This may also be handled in a separate PR. --------- Co-authored-by: Tim Holy &lt;tim.holy@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e">and have</a> <code><a data-pjax="true" title="Add `AbstractOneTo` and have `OneTo` be its subtype (#56902) Currently, `Base` defines `similar` for `Base.OneTo`, with the understanding that offset axes will be handled elsewhere. However, `Base.OneTo` is just one possible one-based range, and there are others such as `StaticArrays.SOneTo` that exist in the ecosystem. `Base` doesn't provide a method to handle a combination of different one-based ranges in `similar`, which leaves the packages in an awkward position: they need to define methods like ```julia similar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape)) ``` where `HeterogeneousShapeTuple` is defined as ```julia Tuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}} ``` https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146 Unfortunately, such methods are borderline type-piracy, as noted in https://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In particular, if the narrower `Base` method that handles `Union{Integer, OneTo}` is removed, then this method explicitly becomes pirating. A solution to this situation is to have `Base` handle all one-based ranges, such that arbitrary combinations of one-based ranges hit fallback methods in `Base`. This PR is a first step in this direction. We add the abstract type `AbstractOneTo`, and have `OneTo` be its subtype. We also add methods to `similar` and `reshape` that accept `AbstractOneTo` arguments. This makes it unnecessary for packages to dispatch on awkward combinations of `Union{Integer, OneTo}` and custom one-based axes, as the base implementation would handle such cases already. There may be other methods that accept an `AbstractOneTo` instead of a `OneTo`, but these may be addressed in separate PRs. Also, there may be one-based ranges that can't subtype `AbstractOneTo`, and a full solution that accepts such ranges as well needs to be implemented through a trait. This may also be handled in a separate PR. --------- Co-authored-by: Tim Holy &lt;tim.holy@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e">OneTo</a></code> <a data-pjax="true" title="Add `AbstractOneTo` and have `OneTo` be its subtype (#56902) Currently, `Base` defines `similar` for `Base.OneTo`, with the understanding that offset axes will be handled elsewhere. However, `Base.OneTo` is just one possible one-based range, and there are others such as `StaticArrays.SOneTo` that exist in the ecosystem. `Base` doesn't provide a method to handle a combination of different one-based ranges in `similar`, which leaves the packages in an awkward position: they need to define methods like ```julia similar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape)) ``` where `HeterogeneousShapeTuple` is defined as ```julia Tuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}} ``` https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146 Unfortunately, such methods are borderline type-piracy, as noted in https://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In particular, if the narrower `Base` method that handles `Union{Integer, OneTo}` is removed, then this method explicitly becomes pirating. A solution to this situation is to have `Base` handle all one-based ranges, such that arbitrary combinations of one-based ranges hit fallback methods in `Base`. This PR is a first step in this direction. We add the abstract type `AbstractOneTo`, and have `OneTo` be its subtype. We also add methods to `similar` and `reshape` that accept `AbstractOneTo` arguments. This makes it unnecessary for packages to dispatch on awkward combinations of `Union{Integer, OneTo}` and custom one-based axes, as the base implementation would handle such cases already. There may be other methods that accept an `AbstractOneTo` instead of a `OneTo`, but these may be addressed in separate PRs. Also, there may be one-based ranges that can't subtype `AbstractOneTo`, and a full solution that accepts such ranges as well needs to be implemented through a trait. This may also be handled in a separate PR. --------- Co-authored-by: Tim Holy &lt;tim.holy@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e">be its subtype (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2757925701" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56902" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56902/hovercard" href="https://github.com/JuliaLang/julia/pull/56902">#56902</a><a data-pjax="true" title="Add `AbstractOneTo` and have `OneTo` be its subtype (#56902) Currently, `Base` defines `similar` for `Base.OneTo`, with the understanding that offset axes will be handled elsewhere. However, `Base.OneTo` is just one possible one-based range, and there are others such as `StaticArrays.SOneTo` that exist in the ecosystem. `Base` doesn't provide a method to handle a combination of different one-based ranges in `similar`, which leaves the packages in an awkward position: they need to define methods like ```julia similar(A::AbstractArray, ::Type{T}, shape::HeterogeneousShapeTuple) where {T} = similar(A, T, homogenize_shape(shape)) ``` where `HeterogeneousShapeTuple` is defined as ```julia Tuple{Vararg{Union{Integer, Base.OneTo, SOneTo}}} ``` https://github.com/JuliaArrays/StaticArrays.jl/blob/07c12450d1b3481dda4b503564ae4a5cb4e27ce4/src/abstractarray.jl#L141-L146 Unfortunately, such methods are borderline type-piracy, as noted in https://github.com/JuliaArrays/StaticArrays.jl/issues/1248. In particular, if the narrower `Base` method that handles `Union{Integer, OneTo}` is removed, then this method explicitly becomes pirating. A solution to this situation is to have `Base` handle all one-based ranges, such that arbitrary combinations of one-based ranges hit fallback methods in `Base`. This PR is a first step in this direction. We add the abstract type `AbstractOneTo`, and have `OneTo` be its subtype. We also add methods to `similar` and `reshape` that accept `AbstractOneTo` arguments. This makes it unnecessary for packages to dispatch on awkward combinations of `Union{Integer, OneTo}` and custom one-based axes, as the base implementation would handle such cases already. There may be other methods that accept an `AbstractOneTo` instead of a `OneTo`, but these may be addressed in separate PRs. Also, there may be one-based ranges that can't subtype `AbstractOneTo`, and a full solution that accepts such ranges as well needs to be implemented through a trait. This may also be handled in a separate PR. --------- Co-authored-by: Tim Holy &lt;tim.holy@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqgt5rab:-loading-announcement show-description-1a4e094" aria-labelledby="show-description-1a4e094"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 1a4e094" role="tooltip" aria-hidden="true" id="show-description-1a4e094">Show description for 1a4e094</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="jishnub" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/10461665?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/jishnub/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="timholy" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1525481?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/timholy/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=jishnub" aria-label="commits by jishnub" data-hovercard-url="/users/jishnub/hovercard">jishnub</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=timholy" aria-label="commits by timholy" data-hovercard-url="/users/timholy/hovercard">timholy</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqgt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqgt5rab:-loading-announcement" href="/JuliaLang/julia/commit/1a4e0943a7d15f9affce6efee1a853972feba42e"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">1a4e094</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqgt5rab:-loading-announcement" aria-labelledby=":Rjnfqgt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 1a4e094" aria-hidden="true" id=":Rjnfqgt5rab:">Copy full SHA for 1a4e094</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-1a4e094" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-1a4e094" href="/JuliaLang/julia/blob/1a4e0943a7d15f9affce6efee1a853972feba42e/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-1a4e094" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-1a4e094" href="/JuliaLang/julia/tree/1a4e0943a7d15f9affce6efee1a853972feba42e" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R1d5rab:" data-testid="commit-group-title">Commits on Mar 25, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rahd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R1d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rahd5rab:-list-view-node-:Rfqhd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Show evaluated test arguments from broadcast functions (#57839) While working on #57825 I noticed that broadcasted functions were not well supported by the `@test` macro and never showed the evaluated test arguments. I've updated the stdlib to support this which required some large enough refactoring that it seemed best to make a separate PR for this change. The changes include: - Avoid embedding function references into `Expr`. This made the code harder to reason aboue than it needed to be. - Breaking up `eval_test` into `eval_test_comparison` and `eval_test_function` due to changes to the functions arguments - Handle broadcast syntax for binary operators (e.g. `1 .== 1`) and function calls (e.g. `(==).(1, 1)`) - Create new `_escaped_call` function which abstracts escaping all of the arguments for a function call. Doing this made it handling the special call syntax for broadcasting easier. - Perform a single pass on function arguments when escaping where previously we did two passes. Depends on: - #57825" class="color-fg-default" href="/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873">Show evaluated test arguments from broadcast functions (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2936342295" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57839" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57839/hovercard" href="https://github.com/JuliaLang/julia/pull/57839">#57839</a><a data-pjax="true" title="Show evaluated test arguments from broadcast functions (#57839) While working on #57825 I noticed that broadcasted functions were not well supported by the `@test` macro and never showed the evaluated test arguments. I've updated the stdlib to support this which required some large enough refactoring that it seemed best to make a separate PR for this change. The changes include: - Avoid embedding function references into `Expr`. This made the code harder to reason aboue than it needed to be. - Breaking up `eval_test` into `eval_test_comparison` and `eval_test_function` due to changes to the functions arguments - Handle broadcast syntax for binary operators (e.g. `1 .== 1`) and function calls (e.g. `(==).(1, 1)`) - Create new `_escaped_call` function which abstracts escaping all of the arguments for a function call. Doing this made it handling the special call syntax for broadcasting easier. - Perform a single pass on function arguments when escaping where previously we did two passes. Depends on: - #57825" class="color-fg-default" href="/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqhd5rab:-loading-announcement show-description-d934b03" aria-labelledby="show-description-d934b03"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for d934b03" role="tooltip" aria-hidden="true" id="show-description-d934b03">Show description for d934b03</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/omus" data-testid="avatar-icon-link" data-hovercard-url="/users/omus/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="omus" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1675958?v=4&amp;size=32" data-testid="github-avatar" aria-label="omus"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=omus" aria-label="commits by omus" data-hovercard-url="/users/omus/hovercard">omus</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqhd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqhd5rab:-loading-announcement" href="/JuliaLang/julia/commit/d934b032ea5bf63b353371ad285605128c735873"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">d934b03</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqhd5rab:-loading-announcement" aria-labelledby=":Rjnfqhd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for d934b03" aria-hidden="true" id=":Rjnfqhd5rab:">Copy full SHA for d934b03</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-d934b03" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-d934b03" href="/JuliaLang/julia/blob/d934b032ea5bf63b353371ad285605128c735873/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-d934b03" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-d934b03" href="/JuliaLang/julia/tree/d934b032ea5bf63b353371ad285605128c735873" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R1t5rab:" data-testid="commit-group-title">Commits on Mar 19, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raht5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R1t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raht5rab:-list-view-node-:Rfqht5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978) Part of the sorting iterables saga: #38328 #46104 #51977 #52010 #54494 --------- Co-authored-by: Neven Sajko &lt;4944410+nsajko@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8">Support</a> <code><a data-pjax="true" title="Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978) Part of the sorting iterables saga: #38328 #46104 #51977 #52010 #54494 --------- Co-authored-by: Neven Sajko &lt;4944410+nsajko@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8">sort(keys(::Dict))</a></code> <a data-pjax="true" title="Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978) Part of the sorting iterables saga: #38328 #46104 #51977 #52010 #54494 --------- Co-authored-by: Neven Sajko &lt;4944410+nsajko@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8">and</a> <code><a data-pjax="true" title="Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978) Part of the sorting iterables saga: #38328 #46104 #51977 #52010 #54494 --------- Co-authored-by: Neven Sajko &lt;4944410+nsajko@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8">sort(values(::Dict))</a></code> <a data-pjax="true" title="Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978) Part of the sorting iterables saga: #38328 #46104 #51977 #52010 #54494 --------- Co-authored-by: Neven Sajko &lt;4944410+nsajko@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8">(</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2771576996" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56978" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56978/hovercard" href="https://github.com/JuliaLang/julia/pull/56978">#56978</a><a data-pjax="true" title="Support `sort(keys(::Dict))` and `sort(values(::Dict))` (#56978) Part of the sorting iterables saga: #38328 #46104 #51977 #52010 #54494 --------- Co-authored-by: Neven Sajko &lt;4944410+nsajko@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqht5rab:-loading-announcement show-description-be3221f" aria-labelledby="show-description-be3221f"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for be3221f" role="tooltip" aria-hidden="true" id="show-description-be3221f">Show description for be3221f</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="LilithHafner" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/60898866?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/LilithHafner/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="nsajko" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/4944410?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/nsajko/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=LilithHafner" aria-label="commits by LilithHafner" data-hovercard-url="/users/LilithHafner/hovercard">LilithHafner</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=nsajko" aria-label="commits by nsajko" data-hovercard-url="/users/nsajko/hovercard">nsajko</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqht5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqht5rab:-loading-announcement" href="/JuliaLang/julia/commit/be3221f697e4bdc5fcb5f0eb8b216442503d60f8"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">be3221f</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqht5rab:-loading-announcement" aria-labelledby=":Rjnfqht5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for be3221f" aria-hidden="true" id=":Rjnfqht5rab:">Copy full SHA for be3221f</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-be3221f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-be3221f" href="/JuliaLang/julia/blob/be3221f697e4bdc5fcb5f0eb8b216442503d60f8/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-be3221f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-be3221f" href="/JuliaLang/julia/tree/be3221f697e4bdc5fcb5f0eb8b216442503d60f8" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R2d5rab:" data-testid="commit-group-title">Commits on Mar 8, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raid5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R2d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raid5rab:-list-view-node-:Rfqid5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Change NEWS to 1.13 and move gcsafe note to HISTORY. (#57679) I also added the PR number, which is not in the release-1.12 NEWS. Do those changes typically get backported?" class="color-fg-default" href="/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333">Change NEWS to 1.13 and move gcsafe note to HISTORY. (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2904111356" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57679" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57679/hovercard" href="https://github.com/JuliaLang/julia/pull/57679">#57679</a><a data-pjax="true" title="Change NEWS to 1.13 and move gcsafe note to HISTORY. (#57679) I also added the PR number, which is not in the release-1.12 NEWS. Do those changes typically get backported?" class="color-fg-default" href="/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqid5rab:-loading-announcement show-description-bbcdc0f" aria-labelledby="show-description-bbcdc0f"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for bbcdc0f" role="tooltip" aria-hidden="true" id="show-description-bbcdc0f">Show description for bbcdc0f</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/christiangnrd" data-testid="avatar-icon-link" data-hovercard-url="/users/christiangnrd/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="christiangnrd" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/28689358?v=4&amp;size=32" data-testid="github-avatar" aria-label="christiangnrd"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=christiangnrd" aria-label="commits by christiangnrd" data-hovercard-url="/users/christiangnrd/hovercard">christiangnrd</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqid5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqid5rab:-loading-announcement" href="/JuliaLang/julia/commit/bbcdc0f6a619b2aefc4ed606e72b8963f2723333"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">bbcdc0f</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqid5rab:-loading-announcement" aria-labelledby=":Rjnfqid5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for bbcdc0f" aria-hidden="true" id=":Rjnfqid5rab:">Copy full SHA for bbcdc0f</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-bbcdc0f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-bbcdc0f" href="/JuliaLang/julia/blob/bbcdc0f6a619b2aefc4ed606e72b8963f2723333/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-bbcdc0f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-bbcdc0f" href="/JuliaLang/julia/tree/bbcdc0f6a619b2aefc4ed606e72b8963f2723333" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R2t5rab:" data-testid="commit-group-title">Commits on Feb 15, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rait5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R2t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rait5rab:-list-view-node-:Rfqit5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title='Allow for :foreigncall to transition to GC safe automatically (#49933) This has been bouncing around as a idea for a while. One of the challenges around time-to-safepoint has been Julia code that is calling libraries. Since foreign code will not include safepoints we see increased latency when one thread is running a foreign-call and another wants to trigger GC. The open design question here is: - Do we expose this as an option the user must "opt-in", e.g. by using a keyword arg to `@ccall` or a specific calling-convetion. - Or do we turn this on for all ccall, except for Julia runtime calls. There is relativly little code outside the Julia runtime that needs to be "GC unsafe", exception are programs that directly use the Julia C-API. Incidentially `jl_adopt_thread` and `@cfunction`/`@ccallable` do the right thing and transition to "GC unsafe", regardless of what state the thread currently is in. I still need to figure out how to reliably detect Julia runtime calls, but I think we can switch all other calls to "GC safe". We should also consider optimizations that mark large regions of code without Julia runtime interactions as "GC safe" in particular numeric for-loops. Closes #57057 --------- Co-authored-by: Gabriel Baraldi &lt;baraldigabriel@gmail.com&gt;' class="color-fg-default" href="/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991">Allow for :foreigncall to transition to GC safe automatically (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1721085613" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/49933" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/49933/hovercard" href="https://github.com/JuliaLang/julia/pull/49933">#49933</a><a data-pjax="true" title='Allow for :foreigncall to transition to GC safe automatically (#49933) This has been bouncing around as a idea for a while. One of the challenges around time-to-safepoint has been Julia code that is calling libraries. Since foreign code will not include safepoints we see increased latency when one thread is running a foreign-call and another wants to trigger GC. The open design question here is: - Do we expose this as an option the user must "opt-in", e.g. by using a keyword arg to `@ccall` or a specific calling-convetion. - Or do we turn this on for all ccall, except for Julia runtime calls. There is relativly little code outside the Julia runtime that needs to be "GC unsafe", exception are programs that directly use the Julia C-API. Incidentially `jl_adopt_thread` and `@cfunction`/`@ccallable` do the right thing and transition to "GC unsafe", regardless of what state the thread currently is in. I still need to figure out how to reliably detect Julia runtime calls, but I think we can switch all other calls to "GC safe". We should also consider optimizations that mark large regions of code without Julia runtime interactions as "GC safe" in particular numeric for-loops. Closes #57057 --------- Co-authored-by: Gabriel Baraldi &lt;baraldigabriel@gmail.com&gt;' class="color-fg-default" href="/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqit5rab:-loading-announcement show-description-85458a0" aria-labelledby="show-description-85458a0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 85458a0" role="tooltip" aria-hidden="true" id="show-description-85458a0">Show description for 85458a0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="vchuravy" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/145258?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/vchuravy/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="gbaraldi" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/28694980?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/gbaraldi/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=vchuravy" aria-label="commits by vchuravy" data-hovercard-url="/users/vchuravy/hovercard">vchuravy</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=gbaraldi" aria-label="commits by gbaraldi" data-hovercard-url="/users/gbaraldi/hovercard">gbaraldi</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqit5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqit5rab:-loading-announcement" href="/JuliaLang/julia/commit/85458a04f0eab6c70d9e9a5b575d67c46a65f991"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">85458a0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqit5rab:-loading-announcement" aria-labelledby=":Rjnfqit5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 85458a0" aria-hidden="true" id=":Rjnfqit5rab:">Copy full SHA for 85458a0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-85458a0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-85458a0" href="/JuliaLang/julia/blob/85458a04f0eab6c70d9e9a5b575d67c46a65f991/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-85458a0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-85458a0" href="/JuliaLang/julia/tree/85458a04f0eab6c70d9e9a5b575d67c46a65f991" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R3d5rab:" data-testid="commit-group-title">Commits on Feb 6, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rajd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R3d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rajd5rab:-list-view-node-:Rfqjd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="move NEWS to HISTORY (#57256)" class="color-fg-default" href="/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368">move NEWS to HISTORY (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2830373041" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57256" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57256/hovercard" href="https://github.com/JuliaLang/julia/pull/57256">#57256</a><a data-pjax="true" title="move NEWS to HISTORY (#57256)" class="color-fg-default" href="/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/KristofferC" data-testid="avatar-icon-link" data-hovercard-url="/users/KristofferC/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="KristofferC" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1282691?v=4&amp;size=32" data-testid="github-avatar" aria-label="KristofferC"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=KristofferC" aria-label="commits by KristofferC" data-hovercard-url="/users/KristofferC/hovercard">KristofferC</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqjd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqjd5rab:-loading-announcement" href="/JuliaLang/julia/commit/7621dc541a2f7b63441ffa797163e3ee01094368"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">7621dc5</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqjd5rab:-loading-announcement" aria-labelledby=":Rjnfqjd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 7621dc5" aria-hidden="true" id=":Rjnfqjd5rab:">Copy full SHA for 7621dc5</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-7621dc5" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-7621dc5" href="/JuliaLang/julia/blob/7621dc541a2f7b63441ffa797163e3ee01094368/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-7621dc5" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-7621dc5" href="/JuliaLang/julia/tree/7621dc541a2f7b63441ffa797163e3ee01094368" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R3t5rab:" data-testid="commit-group-title">Commits on Feb 5, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rajt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R3t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rajt5rab:-list-view-node-:Rfqjt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="edit NEWS for v1.12 (#57262)" class="color-fg-default" href="/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44">edit NEWS for v1.12 (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2831088475" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57262" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57262/hovercard" href="https://github.com/JuliaLang/julia/pull/57262">#57262</a><a data-pjax="true" title="edit NEWS for v1.12 (#57262)" class="color-fg-default" href="/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/JeffBezanson" data-testid="avatar-icon-link" data-hovercard-url="/users/JeffBezanson/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="JeffBezanson" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/744556?v=4&amp;size=32" data-testid="github-avatar" aria-label="JeffBezanson"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=JeffBezanson" aria-label="commits by JeffBezanson" data-hovercard-url="/users/JeffBezanson/hovercard">JeffBezanson</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqjt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqjt5rab:-loading-announcement" href="/JuliaLang/julia/commit/99fd5d9a92190e826bc462d5739e7be948a3bf44"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">99fd5d9</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqjt5rab:-loading-announcement" aria-labelledby=":Rjnfqjt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 99fd5d9" aria-hidden="true" id=":Rjnfqjt5rab:">Copy full SHA for 99fd5d9</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-99fd5d9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-99fd5d9" href="/JuliaLang/julia/blob/99fd5d9a92190e826bc462d5739e7be948a3bf44/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-99fd5d9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-99fd5d9" href="/JuliaLang/julia/tree/99fd5d9a92190e826bc462d5739e7be948a3bf44" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R4d5rab:" data-testid="commit-group-title">Commits on Feb 3, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rakd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R4d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rakd5rab:-list-view-node-:Rfqkd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Define publicity at a per-binding level, not per-symbol (#57094) Symbols don't belong to modules and can't be marked public. The statement `public Fix` in Base does not make the symbol `:Fix` public everywhere. My package's `Package.Fix` may still be private. It's bindings that are marked this way: https://github.com/JuliaLang/julia/blob/fa9478b5178052ef00690732fe363601182b6922/src/julia.h#L695-L705" class="color-fg-default" href="/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16">Define publicity at a per-binding level, not per-symbol (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2796999825" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57094" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57094/hovercard" href="https://github.com/JuliaLang/julia/pull/57094">#57094</a><a data-pjax="true" title="Define publicity at a per-binding level, not per-symbol (#57094) Symbols don't belong to modules and can't be marked public. The statement `public Fix` in Base does not make the symbol `:Fix` public everywhere. My package's `Package.Fix` may still be private. It's bindings that are marked this way: https://github.com/JuliaLang/julia/blob/fa9478b5178052ef00690732fe363601182b6922/src/julia.h#L695-L705" class="color-fg-default" href="/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqkd5rab:-loading-announcement show-description-4bc3206" aria-labelledby="show-description-4bc3206"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 4bc3206" role="tooltip" aria-hidden="true" id="show-description-4bc3206">Show description for 4bc3206</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/LilithHafner" data-testid="avatar-icon-link" data-hovercard-url="/users/LilithHafner/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="LilithHafner" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/60898866?v=4&amp;size=32" data-testid="github-avatar" aria-label="LilithHafner"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=LilithHafner" aria-label="commits by LilithHafner" data-hovercard-url="/users/LilithHafner/hovercard">LilithHafner</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqkd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqkd5rab:-loading-announcement" href="/JuliaLang/julia/commit/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">4bc3206</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqkd5rab:-loading-announcement" aria-labelledby=":Rjnfqkd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 4bc3206" aria-hidden="true" id=":Rjnfqkd5rab:">Copy full SHA for 4bc3206</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-4bc3206" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-4bc3206" href="/JuliaLang/julia/blob/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-4bc3206" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-4bc3206" href="/JuliaLang/julia/tree/4bc3206dc2a2b3cb6fa0efd6ce49ea8b6eedbc16" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R4t5rab:" data-testid="commit-group-title">Commits on Jan 28, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rakt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R4t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rakt5rab:-list-view-node-:Rnqkt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add `Timer` args to struct and add show method (#57081)" class="color-fg-default" href="/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c">Add</a> <code><a data-pjax="true" title="Add `Timer` args to struct and add show method (#57081)" class="color-fg-default" href="/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c">Timer</a></code> <a data-pjax="true" title="Add `Timer` args to struct and add show method (#57081)" class="color-fg-default" href="/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c">args to struct and add show method (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2795961810" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57081" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57081/hovercard" href="https://github.com/JuliaLang/julia/pull/57081">#57081</a><a data-pjax="true" title="Add `Timer` args to struct and add show method (#57081)" class="color-fg-default" href="/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/IanButterworth" data-testid="avatar-icon-link" data-hovercard-url="/users/IanButterworth/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="IanButterworth" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1694067?v=4&amp;size=32" data-testid="github-avatar" aria-label="IanButterworth"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=IanButterworth" aria-label="commits by IanButterworth" data-hovercard-url="/users/IanButterworth/hovercard">IanButterworth</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqkt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nenqkt5rab:-loading-announcement" href="/JuliaLang/julia/commit/575d8e805d2b0b2cc2213b7745f3a90cef190b0c"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">575d8e8</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqkt5rab:-loading-announcement" aria-labelledby=":R17enqkt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 575d8e8" aria-hidden="true" id=":R17enqkt5rab:">Copy full SHA for 575d8e8</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-575d8e8" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-575d8e8" href="/JuliaLang/julia/blob/575d8e805d2b0b2cc2213b7745f3a90cef190b0c/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-575d8e8" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-575d8e8" href="/JuliaLang/julia/tree/575d8e805d2b0b2cc2213b7745f3a90cef190b0c" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Rakt5rab:-list-view-node-:Rrqkt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Default to 1 interactive thread (#57087)" class="color-fg-default" href="/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c">Default to 1 interactive thread (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2796242443" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57087" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57087/hovercard" href="https://github.com/JuliaLang/julia/pull/57087">#57087</a><a data-pjax="true" title="Default to 1 interactive thread (#57087)" class="color-fg-default" href="/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/IanButterworth" data-testid="avatar-icon-link" data-hovercard-url="/users/IanButterworth/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="IanButterworth" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1694067?v=4&amp;size=32" data-testid="github-avatar" aria-label="IanButterworth"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=IanButterworth" aria-label="commits by IanButterworth" data-hovercard-url="/users/IanButterworth/hovercard">IanButterworth</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqkt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nerqkt5rab:-loading-announcement" href="/JuliaLang/julia/commit/fbe865657942da7d73cc02f76064f9ba9cdef56c"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">fbe8656</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqkt5rab:-loading-announcement" aria-labelledby=":R17erqkt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for fbe8656" aria-hidden="true" id=":R17erqkt5rab:">Copy full SHA for fbe8656</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-fbe8656" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-fbe8656" href="/JuliaLang/julia/blob/fbe865657942da7d73cc02f76064f9ba9cdef56c/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-fbe8656" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-fbe8656" href="/JuliaLang/julia/tree/fbe865657942da7d73cc02f76064f9ba9cdef56c" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R5d5rab:" data-testid="commit-group-title">Commits on Jan 27, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rald5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R5d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rald5rab:-list-view-node-:Rfqld5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)" class="color-fg-default" href="/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7">Add option to use</a> <code><a data-pjax="true" title="Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)" class="color-fg-default" href="/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7">@spawn :samepool</a></code> <a data-pjax="true" title="Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)" class="color-fg-default" href="/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7">for using the same threadpool as the caller (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2800047069" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57109" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57109/hovercard" href="https://github.com/JuliaLang/julia/pull/57109">#57109</a><a data-pjax="true" title="Add option to use `@spawn :samepool` for using the same threadpool as the caller (#57109)" class="color-fg-default" href="/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/IanButterworth" data-testid="avatar-icon-link" data-hovercard-url="/users/IanButterworth/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="IanButterworth" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1694067?v=4&amp;size=32" data-testid="github-avatar" aria-label="IanButterworth"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=IanButterworth" aria-label="commits by IanButterworth" data-hovercard-url="/users/IanButterworth/hovercard">IanButterworth</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqld5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqld5rab:-loading-announcement" href="/JuliaLang/julia/commit/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">cc3e7b6</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqld5rab:-loading-announcement" aria-labelledby=":Rjnfqld5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for cc3e7b6" aria-hidden="true" id=":Rjnfqld5rab:">Copy full SHA for cc3e7b6</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-cc3e7b6" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-cc3e7b6" href="/JuliaLang/julia/blob/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-cc3e7b6" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-cc3e7b6" href="/JuliaLang/julia/tree/cc3e7b67d6af2eaf4ff5d52d57a0bc63c5ec5da7" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R5t5rab:" data-testid="commit-group-title">Commits on Jan 21, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ralt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R5t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ralt5rab:-list-view-node-:Rfqlt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="base: add `Sys.detectwsl()` (#57069) Close #36425, fix #36354 ## How to detect WSL? There are a number of ways that can be used to detect WSL environments, but each can have false positives. We finally chose to use the same method as Snapd to detect WSL. Because Windows installs Ubuntu LTS as WSL by default. So we assume that Snapd's detection method will work for most users. - Ubuntu/Snapd: https://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172 - microsoft/WSL#423 - microsoft/WSL#4071 - https://superuser.com/q/1749781/1460597 ## Known limitations - this is a runtime test, and thus cannot meaningfully be used in `@static if` constructs. - Linux users can create their own - `/proc/sys/fs/binfmt_misc/WSLInterop` file - or `/run/WSL/` folder to pretend to be a WSL environment. --- - I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and alpine-release-3.17.0 (win store) - [x] Add compat, NEWS, tests - [x] Take a look at different detect methods, figure out which one is more robust --------- Co-authored-by: Gautam Mishra &lt;mishragautam96@gmail.com&gt; Co-authored-by: Max Horn &lt;241512+fingolfin@users.noreply.github.com&gt; Co-authored-by: Chengyu Han &lt;git@wo-class.cn&gt; Co-authored-by: Alex Arslan &lt;ararslan@comcast.net&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c">base: add</a> <code><a data-pjax="true" title="base: add `Sys.detectwsl()` (#57069) Close #36425, fix #36354 ## How to detect WSL? There are a number of ways that can be used to detect WSL environments, but each can have false positives. We finally chose to use the same method as Snapd to detect WSL. Because Windows installs Ubuntu LTS as WSL by default. So we assume that Snapd's detection method will work for most users. - Ubuntu/Snapd: https://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172 - microsoft/WSL#423 - microsoft/WSL#4071 - https://superuser.com/q/1749781/1460597 ## Known limitations - this is a runtime test, and thus cannot meaningfully be used in `@static if` constructs. - Linux users can create their own - `/proc/sys/fs/binfmt_misc/WSLInterop` file - or `/run/WSL/` folder to pretend to be a WSL environment. --- - I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and alpine-release-3.17.0 (win store) - [x] Add compat, NEWS, tests - [x] Take a look at different detect methods, figure out which one is more robust --------- Co-authored-by: Gautam Mishra &lt;mishragautam96@gmail.com&gt; Co-authored-by: Max Horn &lt;241512+fingolfin@users.noreply.github.com&gt; Co-authored-by: Chengyu Han &lt;git@wo-class.cn&gt; Co-authored-by: Alex Arslan &lt;ararslan@comcast.net&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c">Sys.detectwsl()</a></code> <a data-pjax="true" title="base: add `Sys.detectwsl()` (#57069) Close #36425, fix #36354 ## How to detect WSL? There are a number of ways that can be used to detect WSL environments, but each can have false positives. We finally chose to use the same method as Snapd to detect WSL. Because Windows installs Ubuntu LTS as WSL by default. So we assume that Snapd's detection method will work for most users. - Ubuntu/Snapd: https://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172 - microsoft/WSL#423 - microsoft/WSL#4071 - https://superuser.com/q/1749781/1460597 ## Known limitations - this is a runtime test, and thus cannot meaningfully be used in `@static if` constructs. - Linux users can create their own - `/proc/sys/fs/binfmt_misc/WSLInterop` file - or `/run/WSL/` folder to pretend to be a WSL environment. --- - I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and alpine-release-3.17.0 (win store) - [x] Add compat, NEWS, tests - [x] Take a look at different detect methods, figure out which one is more robust --------- Co-authored-by: Gautam Mishra &lt;mishragautam96@gmail.com&gt; Co-authored-by: Max Horn &lt;241512+fingolfin@users.noreply.github.com&gt; Co-authored-by: Chengyu Han &lt;git@wo-class.cn&gt; Co-authored-by: Alex Arslan &lt;ararslan@comcast.net&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c">(</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2792794844" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/57069" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/57069/hovercard" href="https://github.com/JuliaLang/julia/pull/57069">#57069</a><a data-pjax="true" title="base: add `Sys.detectwsl()` (#57069) Close #36425, fix #36354 ## How to detect WSL? There are a number of ways that can be used to detect WSL environments, but each can have false positives. We finally chose to use the same method as Snapd to detect WSL. Because Windows installs Ubuntu LTS as WSL by default. So we assume that Snapd's detection method will work for most users. - Ubuntu/Snapd: https://github.com/canonical/snapd/blob/03a578a5dff26467dcc80580fcd4720a486185a5/release/release.go#L151-L172 - microsoft/WSL#423 - microsoft/WSL#4071 - https://superuser.com/q/1749781/1460597 ## Known limitations - this is a runtime test, and thus cannot meaningfully be used in `@static if` constructs. - Linux users can create their own - `/proc/sys/fs/binfmt_misc/WSLInterop` file - or `/run/WSL/` folder to pretend to be a WSL environment. --- - I've tested this under: Ubuntu 22.04.5 LTS (default/Offical) and alpine-release-3.17.0 (win store) - [x] Add compat, NEWS, tests - [x] Take a look at different detect methods, figure out which one is more robust --------- Co-authored-by: Gautam Mishra &lt;mishragautam96@gmail.com&gt; Co-authored-by: Max Horn &lt;241512+fingolfin@users.noreply.github.com&gt; Co-authored-by: Chengyu Han &lt;git@wo-class.cn&gt; Co-authored-by: Alex Arslan &lt;ararslan@comcast.net&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqlt5rab:-loading-announcement show-description-323ca86" aria-labelledby="show-description-323ca86"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 323ca86" role="tooltip" aria-hidden="true" id="show-description-323ca86">Show description for 323ca86</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3+" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three-plus prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="inkydragon" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5158738?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/inkydragon/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="mgautam98" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/29784549?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/mgautam98/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="fingolfin" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/241512?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/fingolfin/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="ararslan" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/6396159?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/ararslan/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 4 authors" data-testid="authors-dialog-anchor" muted="">4<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqlt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqlt5rab:-loading-announcement" href="/JuliaLang/julia/commit/323ca86cb5ff614b713c3995ea11b7755b74190c"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">323ca86</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqlt5rab:-loading-announcement" aria-labelledby=":Rjnfqlt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 323ca86" aria-hidden="true" id=":Rjnfqlt5rab:">Copy full SHA for 323ca86</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-323ca86" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-323ca86" href="/JuliaLang/julia/blob/323ca86cb5ff614b713c3995ea11b7755b74190c/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-323ca86" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-323ca86" href="/JuliaLang/julia/tree/323ca86cb5ff614b713c3995ea11b7755b74190c" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R6d5rab:" data-testid="commit-group-title">Commits on Jan 8, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ramd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R6d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ramd5rab:-list-view-node-:Rfqmd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Allow `map!(f, array)` (#40632) ...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`. --------- Co-authored-by: Lilith Orion Hafner &lt;lilithhafner@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250">Allow</a> <code><a data-pjax="true" title="Allow `map!(f, array)` (#40632) ...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`. --------- Co-authored-by: Lilith Orion Hafner &lt;lilithhafner@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250">map!(f, array)</a></code> <a data-pjax="true" title="Allow `map!(f, array)` (#40632) ...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`. --------- Co-authored-by: Lilith Orion Hafner &lt;lilithhafner@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250">(</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="868905797" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/40632" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/40632/hovercard" href="https://github.com/JuliaLang/julia/pull/40632">#40632</a><a data-pjax="true" title="Allow `map!(f, array)` (#40632) ...there's really no sensible interpretation of `map!(f, array)` other than `map!(f, array, array)`. --------- Co-authored-by: Lilith Orion Hafner &lt;lilithhafner@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqmd5rab:-loading-announcement show-description-38b41b5" aria-labelledby="show-description-38b41b5"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 38b41b5" role="tooltip" aria-hidden="true" id="show-description-38b41b5">Show description for 38b41b5</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="mcabbott" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/32575566?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/mcabbott/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="LilithHafner" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/60898866?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/LilithHafner/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=mcabbott" aria-label="commits by mcabbott" data-hovercard-url="/users/mcabbott/hovercard">mcabbott</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=LilithHafner" aria-label="commits by LilithHafner" data-hovercard-url="/users/LilithHafner/hovercard">LilithHafner</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqmd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqmd5rab:-loading-announcement" href="/JuliaLang/julia/commit/38b41b5f6cbef96643f1495e1c6ea2470b6e7250"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">38b41b5</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqmd5rab:-loading-announcement" aria-labelledby=":Rjnfqmd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 38b41b5" aria-hidden="true" id=":Rjnfqmd5rab:">Copy full SHA for 38b41b5</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-38b41b5" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-38b41b5" href="/JuliaLang/julia/blob/38b41b5f6cbef96643f1495e1c6ea2470b6e7250/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-38b41b5" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-38b41b5" href="/JuliaLang/julia/tree/38b41b5f6cbef96643f1495e1c6ea2470b6e7250" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R6t5rab:" data-testid="commit-group-title">Commits on Jan 6, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ramt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R6t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ramt5rab:-list-view-node-:Rfqmt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)" class="color-fg-default" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed">Make</a> <code><a data-pjax="true" title="Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)" class="color-fg-default" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed">Timer(f, ...)</a></code> <a data-pjax="true" title="Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)" class="color-fg-default" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed">tasks match the stickiness of the parent task. Add</a> <code><a data-pjax="true" title="Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)" class="color-fg-default" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed">spawn</a></code> <a data-pjax="true" title="Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)" class="color-fg-default" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed">kwarg. (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2715631336" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56745" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56745/hovercard" href="https://github.com/JuliaLang/julia/pull/56745">#56745</a><a data-pjax="true" title="Make `Timer(f, ...)` tasks match the stickiness of the parent task. Add `spawn` kwarg. (#56745)" class="color-fg-default" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/IanButterworth" data-testid="avatar-icon-link" data-hovercard-url="/users/IanButterworth/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="IanButterworth" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1694067?v=4&amp;size=32" data-testid="github-avatar" aria-label="IanButterworth"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=IanButterworth" aria-label="commits by IanButterworth" data-hovercard-url="/users/IanButterworth/hovercard">IanButterworth</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqmt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqmt5rab:-loading-announcement" href="/JuliaLang/julia/commit/0787a62091f886b39537386c3d1eaba72cb673ed"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">0787a62</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqmt5rab:-loading-announcement" aria-labelledby=":Rjnfqmt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 0787a62" aria-hidden="true" id=":Rjnfqmt5rab:">Copy full SHA for 0787a62</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-0787a62" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-0787a62" href="/JuliaLang/julia/blob/0787a62091f886b39537386c3d1eaba72cb673ed/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-0787a62" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-0787a62" href="/JuliaLang/julia/tree/0787a62091f886b39537386c3d1eaba72cb673ed" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R7d5rab:" data-testid="commit-group-title">Commits on Jan 2, 2025</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rand5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R7d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rand5rab:-list-view-node-:Rfqnd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title='deps: support Unicode 16 via utf8proc 2.10.0 (#56925) Similar to #51799, support [Unicode 16](https://www.unicode.org/versions/Unicode16.0.0/) by bumping utf8proc to 2.10.0 (thanks to https://github.com/JuliaStrings/utf8proc/pull/277 by @eschnett). This allows us to use [7 exciting new emoji characters](https://www.unicode.org/emoji/charts-16.0/emoji-released.html) as identifiers, including "face with bags under eyes" ![image](https://github.com/user-attachments/assets/4959b7ca-100e-4efc-af58-b03184ae2dca) `"\U1fae9"` (but still no superscript "q"). Closes #56035.' class="color-fg-default" href="/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac">deps: support Unicode 16 via utf8proc 2.10.0 (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2764674487" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56925" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56925/hovercard" href="https://github.com/JuliaLang/julia/pull/56925">#56925</a><a data-pjax="true" title='deps: support Unicode 16 via utf8proc 2.10.0 (#56925) Similar to #51799, support [Unicode 16](https://www.unicode.org/versions/Unicode16.0.0/) by bumping utf8proc to 2.10.0 (thanks to https://github.com/JuliaStrings/utf8proc/pull/277 by @eschnett). This allows us to use [7 exciting new emoji characters](https://www.unicode.org/emoji/charts-16.0/emoji-released.html) as identifiers, including "face with bags under eyes" ![image](https://github.com/user-attachments/assets/4959b7ca-100e-4efc-af58-b03184ae2dca) `"\U1fae9"` (but still no superscript "q"). Closes #56035.' class="color-fg-default" href="/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqnd5rab:-loading-announcement show-description-0741f9b" aria-labelledby="show-description-0741f9b"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 0741f9b" role="tooltip" aria-hidden="true" id="show-description-0741f9b">Show description for 0741f9b</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/stevengj" data-testid="avatar-icon-link" data-hovercard-url="/users/stevengj/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="stevengj" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/2913679?v=4&amp;size=32" data-testid="github-avatar" aria-label="stevengj"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=stevengj" aria-label="commits by stevengj" data-hovercard-url="/users/stevengj/hovercard">stevengj</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqnd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqnd5rab:-loading-announcement" href="/JuliaLang/julia/commit/0741f9b99587e90333b736999110fba3d1bc6cac"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">0741f9b</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqnd5rab:-loading-announcement" aria-labelledby=":Rjnfqnd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 0741f9b" aria-hidden="true" id=":Rjnfqnd5rab:">Copy full SHA for 0741f9b</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-0741f9b" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-0741f9b" href="/JuliaLang/julia/blob/0741f9b99587e90333b736999110fba3d1bc6cac/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-0741f9b" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-0741f9b" href="/JuliaLang/julia/tree/0741f9b99587e90333b736999110fba3d1bc6cac" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R7t5rab:" data-testid="commit-group-title">Commits on Dec 31, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rant5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R7t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rant5rab:-list-view-node-:Rfqnt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title='[Test] Print RNG of a failed testset and add option to set it (#56260) Also, add a keyword option to `@testset` to let users override the seed used there, to make testsets more replicable. To give you a taster of what this PR enables: ``` julia&gt; using Random, Test julia&gt; @testset begin @test rand() == 0 end; test set: Test Failed at REPL[2]:2 Expression: rand() == 0 Evaluated: 0.559472630416976 == 0 Stacktrace: [1] top-level scope @ REPL[2]:2 [2] macro expansion @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:1713 [inlined] [3] macro expansion @ REPL[2]:2 [inlined] [4] macro expansion @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:679 [inlined] Test Summary: | Fail Total Time test set | 1 1 0.9s ERROR: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken. Random seed for this testset: Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) julia&gt; @testset rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin @test rand() == 0.559472630416976 end; Test Summary: | Pass Total Time test set | 1 1 0.0s ``` This also works with nested testsets, and testsets on for loops: ``` julia&gt; @testset rng=Xoshiro(0xc380f460355639ee, 0xb39bc754b7d63bbf, 0x1551dbcfb5ed5668, 0x71ab5a18fec21a25, 0x649d0c1be1ca5436) "Outer" begin @test rand() == 0.0004120194925605336 @testset rng=Xoshiro(0xee97f5b53f7cdc49, 0x480ac387b0527d3d, 0x614b416502a9e0f5, 0x5250cb36e4a4ceb1, 0xed6615c59e475fa0) "Inner: $(i)" for i in 1:10 @test rand() == 0.39321938407066637 end end; Test Summary: | Pass Total Time Outer | 11 11 0.0s ``` Being able to see what was the seed inside a testset and being able to set it afterwards should make replicating test failures which only depend on the state of the RNG much easier to debug.' class="color-fg-default" href="/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821">[Test] Print RNG of a failed testset and add option to set it (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2601010382" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56260" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56260/hovercard" href="https://github.com/JuliaLang/julia/pull/56260">#56260</a><a data-pjax="true" title='[Test] Print RNG of a failed testset and add option to set it (#56260) Also, add a keyword option to `@testset` to let users override the seed used there, to make testsets more replicable. To give you a taster of what this PR enables: ``` julia&gt; using Random, Test julia&gt; @testset begin @test rand() == 0 end; test set: Test Failed at REPL[2]:2 Expression: rand() == 0 Evaluated: 0.559472630416976 == 0 Stacktrace: [1] top-level scope @ REPL[2]:2 [2] macro expansion @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:1713 [inlined] [3] macro expansion @ REPL[2]:2 [inlined] [4] macro expansion @ ~/repo/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:679 [inlined] Test Summary: | Fail Total Time test set | 1 1 0.9s ERROR: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken. Random seed for this testset: Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) julia&gt; @testset rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin @test rand() == 0.559472630416976 end; Test Summary: | Pass Total Time test set | 1 1 0.0s ``` This also works with nested testsets, and testsets on for loops: ``` julia&gt; @testset rng=Xoshiro(0xc380f460355639ee, 0xb39bc754b7d63bbf, 0x1551dbcfb5ed5668, 0x71ab5a18fec21a25, 0x649d0c1be1ca5436) "Outer" begin @test rand() == 0.0004120194925605336 @testset rng=Xoshiro(0xee97f5b53f7cdc49, 0x480ac387b0527d3d, 0x614b416502a9e0f5, 0x5250cb36e4a4ceb1, 0xed6615c59e475fa0) "Inner: $(i)" for i in 1:10 @test rand() == 0.39321938407066637 end end; Test Summary: | Pass Total Time Outer | 11 11 0.0s ``` Being able to see what was the seed inside a testset and being able to set it afterwards should make replicating test failures which only depend on the state of the RNG much easier to debug.' class="color-fg-default" href="/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqnt5rab:-loading-announcement show-description-6136893" aria-labelledby="show-description-6136893"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 6136893" role="tooltip" aria-hidden="true" id="show-description-6136893">Show description for 6136893</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/giordano" data-testid="avatar-icon-link" data-hovercard-url="/users/giordano/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="giordano" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/765740?v=4&amp;size=32" data-testid="github-avatar" aria-label="giordano"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=giordano" aria-label="commits by giordano" data-hovercard-url="/users/giordano/hovercard">giordano</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqnt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqnt5rab:-loading-announcement" href="/JuliaLang/julia/commit/6136893eeed0c3559263a5aa465b630d2c7dc821"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">6136893</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqnt5rab:-loading-announcement" aria-labelledby=":Rjnfqnt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 6136893" aria-hidden="true" id=":Rjnfqnt5rab:">Copy full SHA for 6136893</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-6136893" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-6136893" href="/JuliaLang/julia/blob/6136893eeed0c3559263a5aa465b630d2c7dc821/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-6136893" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-6136893" href="/JuliaLang/julia/tree/6136893eeed0c3559263a5aa465b630d2c7dc821" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R8d5rab:" data-testid="commit-group-title">Commits on Dec 27, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raod5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R8d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raod5rab:-list-view-node-:Rfqod5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add #53664, public&amp;export error to news (#56911) Suggested by @simeonschaub [here](https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676)" class="color-fg-default" href="/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859">Add</a> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2176743272" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/53664" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/53664/hovercard" href="https://github.com/JuliaLang/julia/pull/53664">#53664</a><a data-pjax="true" title="Add #53664, public&amp;export error to news (#56911) Suggested by @simeonschaub [here](https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676)" class="color-fg-default" href="/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859">, public&amp;export error to news (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2761069080" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56911" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56911/hovercard" href="https://github.com/JuliaLang/julia/pull/56911">#56911</a><a data-pjax="true" title="Add #53664, public&amp;export error to news (#56911) Suggested by @simeonschaub [here](https://github.com/JuliaLang/julia/pull/53664#issuecomment-2562408676)" class="color-fg-default" href="/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqod5rab:-loading-announcement show-description-8788497" aria-labelledby="show-description-8788497"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 8788497" role="tooltip" aria-hidden="true" id="show-description-8788497">Show description for 8788497</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/LilithHafner" data-testid="avatar-icon-link" data-hovercard-url="/users/LilithHafner/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="LilithHafner" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/60898866?v=4&amp;size=32" data-testid="github-avatar" aria-label="LilithHafner"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=LilithHafner" aria-label="commits by LilithHafner" data-hovercard-url="/users/LilithHafner/hovercard">LilithHafner</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqod5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqod5rab:-loading-announcement" href="/JuliaLang/julia/commit/8788497dc215088227af37b9a7065e00ca959859"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">8788497</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqod5rab:-loading-announcement" aria-labelledby=":Rjnfqod5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 8788497" aria-hidden="true" id=":Rjnfqod5rab:">Copy full SHA for 8788497</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-8788497" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-8788497" href="/JuliaLang/julia/blob/8788497dc215088227af37b9a7065e00ca959859/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-8788497" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-8788497" href="/JuliaLang/julia/tree/8788497dc215088227af37b9a7065e00ca959859" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R8t5rab:" data-testid="commit-group-title">Commits on Dec 8, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raot5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R8t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raot5rab:-list-view-node-:Rnqot5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add sort for NTuples (#54494) This is partially a reland of #46104, but without the controversial `sort(x) = sort!(copymutable(x))` and with some extensibility improvements. Implements #54489." class="color-fg-default" href="/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1">Add sort for NTuples (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2300742507" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/54494" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/54494/hovercard" href="https://github.com/JuliaLang/julia/pull/54494">#54494</a><a data-pjax="true" title="Add sort for NTuples (#54494) This is partially a reland of #46104, but without the controversial `sort(x) = sort!(copymutable(x))` and with some extensibility improvements. Implements #54489." class="color-fg-default" href="/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqot5rab:-loading-announcement show-description-e0656ac" aria-labelledby="show-description-e0656ac"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for e0656ac" role="tooltip" aria-hidden="true" id="show-description-e0656ac">Show description for e0656ac</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/LilithHafner" data-testid="avatar-icon-link" data-hovercard-url="/users/LilithHafner/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="LilithHafner" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/60898866?v=4&amp;size=32" data-testid="github-avatar" aria-label="LilithHafner"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=LilithHafner" aria-label="commits by LilithHafner" data-hovercard-url="/users/LilithHafner/hovercard">LilithHafner</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqot5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nenqot5rab:-loading-announcement" href="/JuliaLang/julia/commit/e0656ac017a427f739f985809017a33c269b3af1"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">e0656ac</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqot5rab:-loading-announcement" aria-labelledby=":R17enqot5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for e0656ac" aria-hidden="true" id=":R17enqot5rab:">Copy full SHA for e0656ac</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-e0656ac" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-e0656ac" href="/JuliaLang/julia/blob/e0656ac017a427f739f985809017a33c269b3af1/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-e0656ac" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-e0656ac" href="/JuliaLang/julia/tree/e0656ac017a427f739f985809017a33c269b3af1" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Raot5rab:-list-view-node-:Rrqot5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Fix typos in docstring, comments, and news (#56778)" class="color-fg-default" href="/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc">Fix typos in docstring, comments, and news (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2725202691" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56778" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56778/hovercard" href="https://github.com/JuliaLang/julia/pull/56778">#56778</a><a data-pjax="true" title="Fix typos in docstring, comments, and news (#56778)" class="color-fg-default" href="/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/clonefetch" data-testid="avatar-icon-link" data-hovercard-url="/users/clonefetch/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="clonefetch" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/166312854?v=4&amp;size=32" data-testid="github-avatar" aria-label="clonefetch"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=clonefetch" aria-label="commits by clonefetch" data-hovercard-url="/users/clonefetch/hovercard">clonefetch</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqot5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nerqot5rab:-loading-announcement" href="/JuliaLang/julia/commit/54755adb1d96539fdd125ea9c442d0fcf206d5cc"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">54755ad</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqot5rab:-loading-announcement" aria-labelledby=":R17erqot5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 54755ad" aria-hidden="true" id=":R17erqot5rab:">Copy full SHA for 54755ad</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-54755ad" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-54755ad" href="/JuliaLang/julia/blob/54755adb1d96539fdd125ea9c442d0fcf206d5cc/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-54755ad" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-54755ad" href="/JuliaLang/julia/tree/54755adb1d96539fdd125ea9c442d0fcf206d5cc" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R9d5rab:" data-testid="commit-group-title">Commits on Dec 7, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rapd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R9d5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rapd5rab:-list-view-node-:Rfqpd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add #54800 to NEWS (#56774) Show glyphs for latex or emoji shortcodes being suggested in the REPL" class="color-fg-default" href="/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf">Add</a> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2353089391" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/54800" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/54800/hovercard" href="https://github.com/JuliaLang/julia/pull/54800">#54800</a> <a data-pjax="true" title="Add #54800 to NEWS (#56774) Show glyphs for latex or emoji shortcodes being suggested in the REPL" class="color-fg-default" href="/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf">to NEWS (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2724682368" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56774" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56774/hovercard" href="https://github.com/JuliaLang/julia/pull/56774">#56774</a><a data-pjax="true" title="Add #54800 to NEWS (#56774) Show glyphs for latex or emoji shortcodes being suggested in the REPL" class="color-fg-default" href="/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqpd5rab:-loading-announcement show-description-6cb9f04" aria-labelledby="show-description-6cb9f04"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 6cb9f04" role="tooltip" aria-hidden="true" id="show-description-6cb9f04">Show description for 6cb9f04</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/jkrumbiegel" data-testid="avatar-icon-link" data-hovercard-url="/users/jkrumbiegel/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="jkrumbiegel" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/22495855?v=4&amp;size=32" data-testid="github-avatar" aria-label="jkrumbiegel"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=jkrumbiegel" aria-label="commits by jkrumbiegel" data-hovercard-url="/users/jkrumbiegel/hovercard">jkrumbiegel</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqpd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqpd5rab:-loading-announcement" href="/JuliaLang/julia/commit/6cb9f04c1ec562f800669ba13a9a096203aea7cf"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">6cb9f04</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqpd5rab:-loading-announcement" aria-labelledby=":Rjnfqpd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 6cb9f04" aria-hidden="true" id=":Rjnfqpd5rab:">Copy full SHA for 6cb9f04</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-6cb9f04" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-6cb9f04" href="/JuliaLang/julia/blob/6cb9f04c1ec562f800669ba13a9a096203aea7cf/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-6cb9f04" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-6cb9f04" href="/JuliaLang/julia/tree/6cb9f04c1ec562f800669ba13a9a096203aea7cf" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":R9t5rab:" data-testid="commit-group-title">Commits on Dec 6, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rapt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":R9t5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rapt5rab:-list-view-node-:Rfqpt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add per-task metrics (#56320) Close https://github.com/JuliaLang/julia/issues/47351 (builds on top of https://github.com/JuliaLang/julia/pull/48416) Adds two per-task metrics: - running time = amount of time the task was actually running (according to our scheduler). Note: currently inclusive of GC time, but would be good to be able to separate that out (in a future PR) - wall time = amount of time between the scheduler becoming aware of this task and the task entering a terminal state (i.e. done or failed). We record running time in `wait()`, where the scheduler stops running the task as well as in `yield(t)`, `yieldto(t)` and `throwto(t)`, which bypass the scheduler. Other places where a task stops running (for `Channel`, `ReentrantLock`, `Event`, `Timer` and `Semaphore` are all implemented in terms of `wait(Condition)`, which in turn calls `wait()`. `LibuvStream` similarly calls `wait()`. This should capture everything (albeit, slightly over-counting task CPU time by including any enqueuing work done before we hit `wait()`). The various metrics counters could be a separate inlined struct if we think that's a useful abstraction, but for now i've just put them directly in `jl_task_t`. They are all atomic, except the `metrics_enabled` flag itself (which we now have to check on task start/switch/done even if metrics are not enabled) which is set on task construction and marked `const` on the julia side. In future PRs we could add more per-task metrics, e.g. compilation time, GC time, allocations, potentially a wait-time breakdown (time waiting on locks, channels, in the scheduler run queue, etc.), potentially the number of yields. Perhaps in future there could be ways to enable this on a per-thread and per-task basis. And potentially in future these same timings could be used by `@time` (e.g. writing this same timing data to a ScopedValue like in https://github.com/JuliaLang/julia/pull/55103 but only for tasks lexically scoped to inside the `@time` block). Timings are off by default but can be turned on globally via starting Julia with `--task-metrics=yes` or calling `Base.Experimental.task_metrics(true)`. Metrics are collected for all tasks created when metrics are enabled. In other words, enabling/disabling timings via `Base.Experimental.task_metrics` does not affect existing `Task`s, only new `Task`s. The other new APIs are `Base.Experimental.task_running_time_ns(::Task)` and `Base.Experimental.task_wall_time_ns(::Task)` for retrieving the new metrics. These are safe to call on any task (including the current task, or a task running on another thread). All these are in `Base.Experimental` to give us room to change up the APIs as we add more metrics in future PRs (without worrying about release timelines). cc @NHDaly @kpamnany @d-netto --------- Co-authored-by: Pete Vilter &lt;pete.vilter@gmail.com&gt; Co-authored-by: K Pamnany &lt;kpamnany@users.noreply.github.com&gt; Co-authored-by: Nathan Daly &lt;nathan.daly@relational.ai&gt; Co-authored-by: Valentin Churavy &lt;vchuravy@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513">Add per-task metrics (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2612616010" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56320" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56320/hovercard" href="https://github.com/JuliaLang/julia/pull/56320">#56320</a><a data-pjax="true" title="Add per-task metrics (#56320) Close https://github.com/JuliaLang/julia/issues/47351 (builds on top of https://github.com/JuliaLang/julia/pull/48416) Adds two per-task metrics: - running time = amount of time the task was actually running (according to our scheduler). Note: currently inclusive of GC time, but would be good to be able to separate that out (in a future PR) - wall time = amount of time between the scheduler becoming aware of this task and the task entering a terminal state (i.e. done or failed). We record running time in `wait()`, where the scheduler stops running the task as well as in `yield(t)`, `yieldto(t)` and `throwto(t)`, which bypass the scheduler. Other places where a task stops running (for `Channel`, `ReentrantLock`, `Event`, `Timer` and `Semaphore` are all implemented in terms of `wait(Condition)`, which in turn calls `wait()`. `LibuvStream` similarly calls `wait()`. This should capture everything (albeit, slightly over-counting task CPU time by including any enqueuing work done before we hit `wait()`). The various metrics counters could be a separate inlined struct if we think that's a useful abstraction, but for now i've just put them directly in `jl_task_t`. They are all atomic, except the `metrics_enabled` flag itself (which we now have to check on task start/switch/done even if metrics are not enabled) which is set on task construction and marked `const` on the julia side. In future PRs we could add more per-task metrics, e.g. compilation time, GC time, allocations, potentially a wait-time breakdown (time waiting on locks, channels, in the scheduler run queue, etc.), potentially the number of yields. Perhaps in future there could be ways to enable this on a per-thread and per-task basis. And potentially in future these same timings could be used by `@time` (e.g. writing this same timing data to a ScopedValue like in https://github.com/JuliaLang/julia/pull/55103 but only for tasks lexically scoped to inside the `@time` block). Timings are off by default but can be turned on globally via starting Julia with `--task-metrics=yes` or calling `Base.Experimental.task_metrics(true)`. Metrics are collected for all tasks created when metrics are enabled. In other words, enabling/disabling timings via `Base.Experimental.task_metrics` does not affect existing `Task`s, only new `Task`s. The other new APIs are `Base.Experimental.task_running_time_ns(::Task)` and `Base.Experimental.task_wall_time_ns(::Task)` for retrieving the new metrics. These are safe to call on any task (including the current task, or a task running on another thread). All these are in `Base.Experimental` to give us room to change up the APIs as we add more metrics in future PRs (without worrying about release timelines). cc @NHDaly @kpamnany @d-netto --------- Co-authored-by: Pete Vilter &lt;pete.vilter@gmail.com&gt; Co-authored-by: K Pamnany &lt;kpamnany@users.noreply.github.com&gt; Co-authored-by: Nathan Daly &lt;nathan.daly@relational.ai&gt; Co-authored-by: Valentin Churavy &lt;vchuravy@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqpt5rab:-loading-announcement show-description-184ad5b" aria-labelledby="show-description-184ad5b"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 184ad5b" role="tooltip" aria-hidden="true" id="show-description-184ad5b">Show description for 184ad5b</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3+" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three-plus prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="nickrobinson251" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/13448787?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/nickrobinson251/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="vilterp" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/7341?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/vilterp/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="kpamnany" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/3784427?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/kpamnany/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="NHDaly" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1582097?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/NHDaly/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="vchuravy" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/145258?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/vchuravy/hovercard"/></div></span><button class="Box-sc-g0xbh4-0 fmQaBv prc-Link-Link-85e08" data-muted="true" aria-label="Show 5 authors" data-testid="authors-dialog-anchor" muted="">5<!-- --> <!-- -->people</button><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqpt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqpt5rab:-loading-announcement" href="/JuliaLang/julia/commit/184ad5bcc955a86638cbc4cc3147b12f0eafb513"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">184ad5b</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqpt5rab:-loading-announcement" aria-labelledby=":Rjnfqpt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 184ad5b" aria-hidden="true" id=":Rjnfqpt5rab:">Copy full SHA for 184ad5b</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-184ad5b" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-184ad5b" href="/JuliaLang/julia/blob/184ad5bcc955a86638cbc4cc3147b12f0eafb513/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-184ad5b" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-184ad5b" href="/JuliaLang/julia/tree/184ad5bcc955a86638cbc4cc3147b12f0eafb513" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rad5rab:" data-testid="commit-group-title">Commits on Dec 3, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raqd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rad5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raqd5rab:-list-view-node-:Rfqqd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Extend `invoke` to accept CodeInstance (#56660) This is an alternative mechanism to #56650 that largely achieves the same result, but by hooking into `invoke` rather than a generated function. They are orthogonal mechanisms, and its possible we want both. However, in #56650, both Jameson and Valentin were skeptical of the generated function signature bottleneck. This PR is sort of a hybrid of mechanism in #52964 and what I proposed in https://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877. In particular, this PR: 1. Extends `invoke` to support a CodeInstance in place of its usual `types` argument. 2. Adds a new `typeinf` optimized generic. The semantics of this optimized generic allow the compiler to instead call a companion `typeinf_edge` function, allowing a mid-inference interpreter switch (like #52964), without being forced through a concrete signature bottleneck. However, if calling `typeinf_edge` does not work (e.g. because the compiler version is mismatched), this still has well defined semantics, you just don't get inference support. The additional benefit of the `typeinf` optimized generic is that it lets custom cache owners tell the runtime how to &quot;cure&quot; code instances that have lost their native code. Currently the runtime only knows how to do that for `owner == nothing` CodeInstances (by re-running inference). This extension is not implemented, but the idea is that the runtime would be permitted to call the `typeinf` optimized generic on the dead CodeInstance's `owner` and `def` fields to obtain a cured CodeInstance (or a user-actionable error from the plugin). This PR includes an implementation of `with_new_compiler` from #56650. This PR includes just enough compiler support to make the compiler optimize this to the same code that #56650 produced: ``` julia&gt; @code_typed with_new_compiler(sin, 1.0) CodeInfo( 1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64 │ %2 = builtin Core.getfield(args, 1)::Float64 │ %3 = invoke sin(%2::Float64)::Float64 └── return %3 ) =&gt; Float64 ``` However, the implementation here is extremely incomplete. I'm putting it up only as a directional sketch to see if people prefer it over #56650. If so, I would prepare a cleaned up version of this PR that has the optimized generics as well as the curing support, but not the full inference integration (which needs a fair bit more work)." class="color-fg-default" href="/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07">Extend</a> <code><a data-pjax="true" title="Extend `invoke` to accept CodeInstance (#56660) This is an alternative mechanism to #56650 that largely achieves the same result, but by hooking into `invoke` rather than a generated function. They are orthogonal mechanisms, and its possible we want both. However, in #56650, both Jameson and Valentin were skeptical of the generated function signature bottleneck. This PR is sort of a hybrid of mechanism in #52964 and what I proposed in https://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877. In particular, this PR: 1. Extends `invoke` to support a CodeInstance in place of its usual `types` argument. 2. Adds a new `typeinf` optimized generic. The semantics of this optimized generic allow the compiler to instead call a companion `typeinf_edge` function, allowing a mid-inference interpreter switch (like #52964), without being forced through a concrete signature bottleneck. However, if calling `typeinf_edge` does not work (e.g. because the compiler version is mismatched), this still has well defined semantics, you just don't get inference support. The additional benefit of the `typeinf` optimized generic is that it lets custom cache owners tell the runtime how to &quot;cure&quot; code instances that have lost their native code. Currently the runtime only knows how to do that for `owner == nothing` CodeInstances (by re-running inference). This extension is not implemented, but the idea is that the runtime would be permitted to call the `typeinf` optimized generic on the dead CodeInstance's `owner` and `def` fields to obtain a cured CodeInstance (or a user-actionable error from the plugin). This PR includes an implementation of `with_new_compiler` from #56650. This PR includes just enough compiler support to make the compiler optimize this to the same code that #56650 produced: ``` julia&gt; @code_typed with_new_compiler(sin, 1.0) CodeInfo( 1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64 │ %2 = builtin Core.getfield(args, 1)::Float64 │ %3 = invoke sin(%2::Float64)::Float64 └── return %3 ) =&gt; Float64 ``` However, the implementation here is extremely incomplete. I'm putting it up only as a directional sketch to see if people prefer it over #56650. If so, I would prepare a cleaned up version of this PR that has the optimized generics as well as the curing support, but not the full inference integration (which needs a fair bit more work)." class="color-fg-default" href="/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07">invoke</a></code> <a data-pjax="true" title="Extend `invoke` to accept CodeInstance (#56660) This is an alternative mechanism to #56650 that largely achieves the same result, but by hooking into `invoke` rather than a generated function. They are orthogonal mechanisms, and its possible we want both. However, in #56650, both Jameson and Valentin were skeptical of the generated function signature bottleneck. This PR is sort of a hybrid of mechanism in #52964 and what I proposed in https://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877. In particular, this PR: 1. Extends `invoke` to support a CodeInstance in place of its usual `types` argument. 2. Adds a new `typeinf` optimized generic. The semantics of this optimized generic allow the compiler to instead call a companion `typeinf_edge` function, allowing a mid-inference interpreter switch (like #52964), without being forced through a concrete signature bottleneck. However, if calling `typeinf_edge` does not work (e.g. because the compiler version is mismatched), this still has well defined semantics, you just don't get inference support. The additional benefit of the `typeinf` optimized generic is that it lets custom cache owners tell the runtime how to &quot;cure&quot; code instances that have lost their native code. Currently the runtime only knows how to do that for `owner == nothing` CodeInstances (by re-running inference). This extension is not implemented, but the idea is that the runtime would be permitted to call the `typeinf` optimized generic on the dead CodeInstance's `owner` and `def` fields to obtain a cured CodeInstance (or a user-actionable error from the plugin). This PR includes an implementation of `with_new_compiler` from #56650. This PR includes just enough compiler support to make the compiler optimize this to the same code that #56650 produced: ``` julia&gt; @code_typed with_new_compiler(sin, 1.0) CodeInfo( 1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64 │ %2 = builtin Core.getfield(args, 1)::Float64 │ %3 = invoke sin(%2::Float64)::Float64 └── return %3 ) =&gt; Float64 ``` However, the implementation here is extremely incomplete. I'm putting it up only as a directional sketch to see if people prefer it over #56650. If so, I would prepare a cleaned up version of this PR that has the optimized generics as well as the curing support, but not the full inference integration (which needs a fair bit more work)." class="color-fg-default" href="/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07">to accept CodeInstance (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2685699746" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56660" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56660/hovercard" href="https://github.com/JuliaLang/julia/pull/56660">#56660</a><a data-pjax="true" title="Extend `invoke` to accept CodeInstance (#56660) This is an alternative mechanism to #56650 that largely achieves the same result, but by hooking into `invoke` rather than a generated function. They are orthogonal mechanisms, and its possible we want both. However, in #56650, both Jameson and Valentin were skeptical of the generated function signature bottleneck. This PR is sort of a hybrid of mechanism in #52964 and what I proposed in https://github.com/JuliaLang/julia/pull/56650#issuecomment-2493800877. In particular, this PR: 1. Extends `invoke` to support a CodeInstance in place of its usual `types` argument. 2. Adds a new `typeinf` optimized generic. The semantics of this optimized generic allow the compiler to instead call a companion `typeinf_edge` function, allowing a mid-inference interpreter switch (like #52964), without being forced through a concrete signature bottleneck. However, if calling `typeinf_edge` does not work (e.g. because the compiler version is mismatched), this still has well defined semantics, you just don't get inference support. The additional benefit of the `typeinf` optimized generic is that it lets custom cache owners tell the runtime how to &quot;cure&quot; code instances that have lost their native code. Currently the runtime only knows how to do that for `owner == nothing` CodeInstances (by re-running inference). This extension is not implemented, but the idea is that the runtime would be permitted to call the `typeinf` optimized generic on the dead CodeInstance's `owner` and `def` fields to obtain a cured CodeInstance (or a user-actionable error from the plugin). This PR includes an implementation of `with_new_compiler` from #56650. This PR includes just enough compiler support to make the compiler optimize this to the same code that #56650 produced: ``` julia&gt; @code_typed with_new_compiler(sin, 1.0) CodeInfo( 1 ─ $(Expr(:foreigncall, :(:jl_get_tls_world_age), UInt64, svec(), 0, :(:ccall)))::UInt64 │ %2 = builtin Core.getfield(args, 1)::Float64 │ %3 = invoke sin(%2::Float64)::Float64 └── return %3 ) =&gt; Float64 ``` However, the implementation here is extremely incomplete. I'm putting it up only as a directional sketch to see if people prefer it over #56650. If so, I would prepare a cleaned up version of this PR that has the optimized generics as well as the curing support, but not the full inference integration (which needs a fair bit more work)." class="color-fg-default" href="/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqqd5rab:-loading-announcement show-description-efa917e" aria-labelledby="show-description-efa917e"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for efa917e" role="tooltip" aria-hidden="true" id="show-description-efa917e">Show description for efa917e</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/Keno" data-testid="avatar-icon-link" data-hovercard-url="/users/Keno/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="Keno" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/1291671?v=4&amp;size=32" data-testid="github-avatar" aria-label="Keno"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=Keno" aria-label="commits by Keno" data-hovercard-url="/users/Keno/hovercard">Keno</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqqd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqqd5rab:-loading-announcement" href="/JuliaLang/julia/commit/efa917e8775cd40fdd74b657d1e5d2db2342cd07"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">efa917e</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqqd5rab:-loading-announcement" aria-labelledby=":Rjnfqqd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for efa917e" aria-hidden="true" id=":Rjnfqqd5rab:">Copy full SHA for efa917e</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-efa917e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-efa917e" href="/JuliaLang/julia/blob/efa917e8775cd40fdd74b657d1e5d2db2342cd07/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-efa917e" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-efa917e" href="/JuliaLang/julia/tree/efa917e8775cd40fdd74b657d1e5d2db2342cd07" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rat5rab:" data-testid="commit-group-title">Commits on Dec 2, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raqt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rat5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raqt5rab:-list-view-node-:Rfqqt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (#56722)" class="color-fg-default" href="/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291">[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2707917090" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56722" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56722/hovercard" href="https://github.com/JuliaLang/julia/pull/56722">#56722</a><a data-pjax="true" title="[NEWS.md] Add PR numbers and remove some 1.11 changes that accidentally came back. (#56722)" class="color-fg-default" href="/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/christiangnrd" data-testid="avatar-icon-link" data-hovercard-url="/users/christiangnrd/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="christiangnrd" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/28689358?v=4&amp;size=32" data-testid="github-avatar" aria-label="christiangnrd"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=christiangnrd" aria-label="commits by christiangnrd" data-hovercard-url="/users/christiangnrd/hovercard">christiangnrd</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqqt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqqt5rab:-loading-announcement" href="/JuliaLang/julia/commit/8ce7d0fce419746e36556d561fe7d1c89704e291"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">8ce7d0f</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqqt5rab:-loading-announcement" aria-labelledby=":Rjnfqqt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 8ce7d0f" aria-hidden="true" id=":Rjnfqqt5rab:">Copy full SHA for 8ce7d0f</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-8ce7d0f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-8ce7d0f" href="/JuliaLang/julia/blob/8ce7d0fce419746e36556d561fe7d1c89704e291/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-8ce7d0f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-8ce7d0f" href="/JuliaLang/julia/tree/8ce7d0fce419746e36556d561fe7d1c89704e291" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rbd5rab:" data-testid="commit-group-title">Commits on Nov 28, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rard5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rbd5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rard5rab:-list-view-node-:Rfqrd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="support passing a specific Method to invoke (#56692) Co-authored-by: Mosè Giordano &lt;765740+giordano@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd">support passing a specific Method to invoke (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2696558723" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56692" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56692/hovercard" href="https://github.com/JuliaLang/julia/pull/56692">#56692</a><a data-pjax="true" title="support passing a specific Method to invoke (#56692) Co-authored-by: Mosè Giordano &lt;765740+giordano@users.noreply.github.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqrd5rab:-loading-announcement show-description-79d8d3f" aria-labelledby="show-description-79d8d3f"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 79d8d3f" role="tooltip" aria-hidden="true" id="show-description-79d8d3f">Show description for 79d8d3f</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="vtjnash" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/330950?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/vtjnash/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="giordano" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/765740?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/giordano/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=vtjnash" aria-label="commits by vtjnash" data-hovercard-url="/users/vtjnash/hovercard">vtjnash</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=giordano" aria-label="commits by giordano" data-hovercard-url="/users/giordano/hovercard">giordano</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqrd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqrd5rab:-loading-announcement" href="/JuliaLang/julia/commit/79d8d3f764e7fde6da323d1063293855612691fd"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">79d8d3f</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqrd5rab:-loading-announcement" aria-labelledby=":Rjnfqrd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 79d8d3f" aria-hidden="true" id=":Rjnfqrd5rab:">Copy full SHA for 79d8d3f</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-79d8d3f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-79d8d3f" href="/JuliaLang/julia/blob/79d8d3f764e7fde6da323d1063293855612691fd/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-79d8d3f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-79d8d3f" href="/JuliaLang/julia/tree/79d8d3f764e7fde6da323d1063293855612691fd" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rbt5rab:" data-testid="commit-group-title">Commits on Nov 11, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rart5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rbt5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rart5rab:-list-view-node-:Rfqrt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add `diagview` to obtain a view along a diagonal (#56175) A function to obtain a view of a diagonal of a matrix is useful, and this is clearly being used widely within `LinearAlgebra`. The implementation here iterates according to the `IndexStyle` of the array: ```julia julia&gt; using LinearAlgebra julia&gt; A = reshape(1:9, 3, 3) 3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64: 1 4 7 2 5 8 3 6 9 julia&gt; diagview(A,1) 2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64: 4 8 julia&gt; T = Tridiagonal(1:3, 3:6, 4:6) 4×4 Tridiagonal{Int64, UnitRange{Int64}}: 3 4 ⋅ ⋅ 1 4 5 ⋅ ⋅ 2 5 6 ⋅ ⋅ 3 6 julia&gt; diagview(T,1) 3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64: 4 5 6 ``` Closes https://github.com/JuliaLang/julia/issues/30250" class="color-fg-default" href="/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a">Add</a> <code><a data-pjax="true" title="Add `diagview` to obtain a view along a diagonal (#56175) A function to obtain a view of a diagonal of a matrix is useful, and this is clearly being used widely within `LinearAlgebra`. The implementation here iterates according to the `IndexStyle` of the array: ```julia julia&gt; using LinearAlgebra julia&gt; A = reshape(1:9, 3, 3) 3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64: 1 4 7 2 5 8 3 6 9 julia&gt; diagview(A,1) 2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64: 4 8 julia&gt; T = Tridiagonal(1:3, 3:6, 4:6) 4×4 Tridiagonal{Int64, UnitRange{Int64}}: 3 4 ⋅ ⋅ 1 4 5 ⋅ ⋅ 2 5 6 ⋅ ⋅ 3 6 julia&gt; diagview(T,1) 3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64: 4 5 6 ``` Closes https://github.com/JuliaLang/julia/issues/30250" class="color-fg-default" href="/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a">diagview</a></code> <a data-pjax="true" title="Add `diagview` to obtain a view along a diagonal (#56175) A function to obtain a view of a diagonal of a matrix is useful, and this is clearly being used widely within `LinearAlgebra`. The implementation here iterates according to the `IndexStyle` of the array: ```julia julia&gt; using LinearAlgebra julia&gt; A = reshape(1:9, 3, 3) 3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64: 1 4 7 2 5 8 3 6 9 julia&gt; diagview(A,1) 2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64: 4 8 julia&gt; T = Tridiagonal(1:3, 3:6, 4:6) 4×4 Tridiagonal{Int64, UnitRange{Int64}}: 3 4 ⋅ ⋅ 1 4 5 ⋅ ⋅ 2 5 6 ⋅ ⋅ 3 6 julia&gt; diagview(T,1) 3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64: 4 5 6 ``` Closes https://github.com/JuliaLang/julia/issues/30250" class="color-fg-default" href="/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a">to obtain a view along a diagonal (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2588911103" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56175" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56175/hovercard" href="https://github.com/JuliaLang/julia/pull/56175">#56175</a><a data-pjax="true" title="Add `diagview` to obtain a view along a diagonal (#56175) A function to obtain a view of a diagonal of a matrix is useful, and this is clearly being used widely within `LinearAlgebra`. The implementation here iterates according to the `IndexStyle` of the array: ```julia julia&gt; using LinearAlgebra julia&gt; A = reshape(1:9, 3, 3) 3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64: 1 4 7 2 5 8 3 6 9 julia&gt; diagview(A,1) 2-element view(::UnitRange{Int64}, 4:4:8) with eltype Int64: 4 8 julia&gt; T = Tridiagonal(1:3, 3:6, 4:6) 4×4 Tridiagonal{Int64, UnitRange{Int64}}: 3 4 ⋅ ⋅ 1 4 5 ⋅ ⋅ 2 5 6 ⋅ ⋅ 3 6 julia&gt; diagview(T,1) 3-element view(::Tridiagonal{Int64, UnitRange{Int64}}, StepRangeLen(CartesianIndex(1, 2), CartesianIndex(1, 1), 3)) with eltype Int64: 4 5 6 ``` Closes https://github.com/JuliaLang/julia/issues/30250" class="color-fg-default" href="/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqrt5rab:-loading-announcement show-description-38e3d14" aria-labelledby="show-description-38e3d14"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 38e3d14" role="tooltip" aria-hidden="true" id="show-description-38e3d14">Show description for 38e3d14</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/jishnub" data-testid="avatar-icon-link" data-hovercard-url="/users/jishnub/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="jishnub" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/10461665?v=4&amp;size=32" data-testid="github-avatar" aria-label="jishnub"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=jishnub" aria-label="commits by jishnub" data-hovercard-url="/users/jishnub/hovercard">jishnub</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqrt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqrt5rab:-loading-announcement" href="/JuliaLang/julia/commit/38e3d1433a2401a05342ee55c3f1c7373ae2168a"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">38e3d14</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqrt5rab:-loading-announcement" aria-labelledby=":Rjnfqrt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 38e3d14" aria-hidden="true" id=":Rjnfqrt5rab:">Copy full SHA for 38e3d14</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-38e3d14" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-38e3d14" href="/JuliaLang/julia/blob/38e3d1433a2401a05342ee55c3f1c7373ae2168a/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-38e3d14" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-38e3d14" href="/JuliaLang/julia/tree/38e3d1433a2401a05342ee55c3f1c7373ae2168a" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rcd5rab:" data-testid="commit-group-title">Commits on Nov 8, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rasd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rcd5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rasd5rab:-list-view-node-:Rfqsd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="NEWS.md: clarify `--trim` (#56460) Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b">NEWS.md: clarify</a> <code><a data-pjax="true" title="NEWS.md: clarify `--trim` (#56460) Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b">--trim</a></code> <a data-pjax="true" title="NEWS.md: clarify `--trim` (#56460) Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b">(</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2635408325" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56460" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56460/hovercard" href="https://github.com/JuliaLang/julia/pull/56460">#56460</a><a data-pjax="true" title="NEWS.md: clarify `--trim` (#56460) Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqsd5rab:-loading-announcement show-description-bb234e2" aria-labelledby="show-description-bb234e2"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for bb234e2" role="tooltip" aria-hidden="true" id="show-description-bb234e2">Show description for bb234e2</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="lassepe" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/10076790?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/lassepe/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="mbauman" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/154641?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/mbauman/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=lassepe" aria-label="commits by lassepe" data-hovercard-url="/users/lassepe/hovercard">lassepe</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=mbauman" aria-label="commits by mbauman" data-hovercard-url="/users/mbauman/hovercard">mbauman</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqsd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqsd5rab:-loading-announcement" href="/JuliaLang/julia/commit/bb234e2f71448e5d163f5d5e4c7680d32313448b"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">bb234e2</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqsd5rab:-loading-announcement" aria-labelledby=":Rjnfqsd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for bb234e2" aria-hidden="true" id=":Rjnfqsd5rab:">Copy full SHA for bb234e2</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-bb234e2" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-bb234e2" href="/JuliaLang/julia/blob/bb234e2f71448e5d163f5d5e4c7680d32313448b/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-bb234e2" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-bb234e2" href="/JuliaLang/julia/tree/bb234e2f71448e5d163f5d5e4c7680d32313448b" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rct5rab:" data-testid="commit-group-title">Commits on Nov 1, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Rast5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rct5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Rast5rab:-list-view-node-:Rfqst5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346) Follow up to #53742, but for the build system. CC: @omus." class="color-fg-default" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa">Make build system respect</a> <code><a data-pjax="true" title="Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346) Follow up to #53742, but for the build system. CC: @omus." class="color-fg-default" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa">FORCE_COLOR</a></code> <a data-pjax="true" title="Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346) Follow up to #53742, but for the build system. CC: @omus." class="color-fg-default" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa">and</a> <code><a data-pjax="true" title="Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346) Follow up to #53742, but for the build system. CC: @omus." class="color-fg-default" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa">NO_COLOR</a></code> <a data-pjax="true" title="Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346) Follow up to #53742, but for the build system. CC: @omus." class="color-fg-default" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa">settings (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2615777943" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56346" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56346/hovercard" href="https://github.com/JuliaLang/julia/pull/56346">#56346</a><a data-pjax="true" title="Make build system respect `FORCE_COLOR` and `NO_COLOR` settings (#56346) Follow up to #53742, but for the build system. CC: @omus." class="color-fg-default" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqst5rab:-loading-announcement show-description-706a4f6" aria-labelledby="show-description-706a4f6"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 706a4f6" role="tooltip" aria-hidden="true" id="show-description-706a4f6">Show description for 706a4f6</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/giordano" data-testid="avatar-icon-link" data-hovercard-url="/users/giordano/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="giordano" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/765740?v=4&amp;size=32" data-testid="github-avatar" aria-label="giordano"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=giordano" aria-label="commits by giordano" data-hovercard-url="/users/giordano/hovercard">giordano</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqst5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqst5rab:-loading-announcement" href="/JuliaLang/julia/commit/706a4f6c5d159366bed25e8217ce80748e3963fa"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">706a4f6</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqst5rab:-loading-announcement" aria-labelledby=":Rjnfqst5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 706a4f6" aria-hidden="true" id=":Rjnfqst5rab:">Copy full SHA for 706a4f6</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-706a4f6" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-706a4f6" href="/JuliaLang/julia/blob/706a4f6c5d159366bed25e8217ce80748e3963fa/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-706a4f6" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-706a4f6" href="/JuliaLang/julia/tree/706a4f6c5d159366bed25e8217ce80748e3963fa" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rdd5rab:" data-testid="commit-group-title">Commits on Oct 27, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ratd5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rdd5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ratd5rab:-list-view-node-:Rfqtd5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Make `LinearAlgebra.haszero` public (#56223) The trait `haszero` is used to check if a type `T` has a unique zero defined using `zero(T)`. This lets us dispatch to optimized paths without losing generality. This PR makes the function public so that this may be extended by packages (such as `StaticArrays`)." class="color-fg-default" href="/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571">Make</a> <code><a data-pjax="true" title="Make `LinearAlgebra.haszero` public (#56223) The trait `haszero` is used to check if a type `T` has a unique zero defined using `zero(T)`. This lets us dispatch to optimized paths without losing generality. This PR makes the function public so that this may be extended by packages (such as `StaticArrays`)." class="color-fg-default" href="/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571">LinearAlgebra.haszero</a></code> <a data-pjax="true" title="Make `LinearAlgebra.haszero` public (#56223) The trait `haszero` is used to check if a type `T` has a unique zero defined using `zero(T)`. This lets us dispatch to optimized paths without losing generality. This PR makes the function public so that this may be extended by packages (such as `StaticArrays`)." class="color-fg-default" href="/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571">public (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2596815353" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56223" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56223/hovercard" href="https://github.com/JuliaLang/julia/pull/56223">#56223</a><a data-pjax="true" title="Make `LinearAlgebra.haszero` public (#56223) The trait `haszero` is used to check if a type `T` has a unique zero defined using `zero(T)`. This lets us dispatch to optimized paths without losing generality. This PR makes the function public so that this may be extended by packages (such as `StaticArrays`)." class="color-fg-default" href="/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqtd5rab:-loading-announcement show-description-fcf7ec0" aria-labelledby="show-description-fcf7ec0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for fcf7ec0" role="tooltip" aria-hidden="true" id="show-description-fcf7ec0">Show description for fcf7ec0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/jishnub" data-testid="avatar-icon-link" data-hovercard-url="/users/jishnub/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="jishnub" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/10461665?v=4&amp;size=32" data-testid="github-avatar" aria-label="jishnub"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=jishnub" aria-label="commits by jishnub" data-hovercard-url="/users/jishnub/hovercard">jishnub</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqtd5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqtd5rab:-loading-announcement" href="/JuliaLang/julia/commit/fcf7ec081509c62967122e0949640e63a3d07571"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">fcf7ec0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqtd5rab:-loading-announcement" aria-labelledby=":Rjnfqtd5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for fcf7ec0" aria-hidden="true" id=":Rjnfqtd5rab:">Copy full SHA for fcf7ec0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-fcf7ec0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-fcf7ec0" href="/JuliaLang/julia/blob/fcf7ec081509c62967122e0949640e63a3d07571/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-fcf7ec0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-fcf7ec0" href="/JuliaLang/julia/tree/fcf7ec081509c62967122e0949640e63a3d07571" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Rdt5rab:" data-testid="commit-group-title">Commits on Oct 25, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Ratt5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Rdt5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Ratt5rab:-list-view-node-:Rnqtt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Wall-time/all tasks profiler (#55889) One limitation of sampling CPU/thread profiles, as is currently done in Julia, is that they primarily capture samples from CPU-intensive tasks. If many tasks are performing IO or contending for concurrency primitives like semaphores, these tasks won’t appear in the profile, as they aren't scheduled on OS threads sampled by the profiler. A wall-time profiler, like the one implemented in this PR, samples tasks regardless of OS thread scheduling. This enables profiling of IO-heavy tasks and detecting areas of heavy contention in the system. Co-developed with @nickrobinson251." class="color-fg-default" href="/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413">Wall-time/all tasks profiler (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2550685627" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/55889" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/55889/hovercard" href="https://github.com/JuliaLang/julia/pull/55889">#55889</a><a data-pjax="true" title="Wall-time/all tasks profiler (#55889) One limitation of sampling CPU/thread profiles, as is currently done in Julia, is that they primarily capture samples from CPU-intensive tasks. If many tasks are performing IO or contending for concurrency primitives like semaphores, these tasks won’t appear in the profile, as they aren't scheduled on OS threads sampled by the profiler. A wall-time profiler, like the one implemented in this PR, samples tasks regardless of OS thread scheduling. This enables profiling of IO-heavy tasks and detecting areas of heavy contention in the system. Co-developed with @nickrobinson251." class="color-fg-default" href="/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqtt5rab:-loading-announcement show-description-f6a38e0" aria-labelledby="show-description-f6a38e0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for f6a38e0" role="tooltip" aria-hidden="true" id="show-description-f6a38e0">Show description for f6a38e0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/d-netto" data-testid="avatar-icon-link" data-hovercard-url="/users/d-netto/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="d-netto" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/61364108?v=4&amp;size=32" data-testid="github-avatar" aria-label="d-netto"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=d-netto" aria-label="commits by d-netto" data-hovercard-url="/users/d-netto/hovercard">d-netto</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqtt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nenqtt5rab:-loading-announcement" href="/JuliaLang/julia/commit/f6a38e00c009292e2b2730758bb99a154809c413"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">f6a38e0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqtt5rab:-loading-announcement" aria-labelledby=":R17enqtt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for f6a38e0" aria-hidden="true" id=":R17enqtt5rab:">Copy full SHA for f6a38e0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-f6a38e0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-f6a38e0" href="/JuliaLang/julia/blob/f6a38e00c009292e2b2730758bb99a154809c413/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-f6a38e0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-f6a38e0" href="/JuliaLang/julia/tree/f6a38e00c009292e2b2730758bb99a154809c413" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Ratt5rab:-list-view-node-:Rrqtt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196) The discussion here mentions `require_one_based_indexing` being part of the public API: https://github.com/JuliaLang/julia/pull/43263 Both functions are also documented (albeit in the dev docs): * `require_one_based_indexing`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices * `has_offset_axes`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes Towards https://github.com/JuliaLang/julia/issues/51335. --------- Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db">Mark</a> <code><a data-pjax="true" title="Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196) The discussion here mentions `require_one_based_indexing` being part of the public API: https://github.com/JuliaLang/julia/pull/43263 Both functions are also documented (albeit in the dev docs): * `require_one_based_indexing`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices * `has_offset_axes`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes Towards https://github.com/JuliaLang/julia/issues/51335. --------- Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db">require_one_based_indexing</a></code> <a data-pjax="true" title="Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196) The discussion here mentions `require_one_based_indexing` being part of the public API: https://github.com/JuliaLang/julia/pull/43263 Both functions are also documented (albeit in the dev docs): * `require_one_based_indexing`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices * `has_offset_axes`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes Towards https://github.com/JuliaLang/julia/issues/51335. --------- Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db">and</a> <code><a data-pjax="true" title="Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196) The discussion here mentions `require_one_based_indexing` being part of the public API: https://github.com/JuliaLang/julia/pull/43263 Both functions are also documented (albeit in the dev docs): * `require_one_based_indexing`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices * `has_offset_axes`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes Towards https://github.com/JuliaLang/julia/issues/51335. --------- Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db">has_offset_axes</a></code> <a data-pjax="true" title="Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196) The discussion here mentions `require_one_based_indexing` being part of the public API: https://github.com/JuliaLang/julia/pull/43263 Both functions are also documented (albeit in the dev docs): * `require_one_based_indexing`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices * `has_offset_axes`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes Towards https://github.com/JuliaLang/julia/issues/51335. --------- Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db">as public (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2592167806" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56196" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56196/hovercard" href="https://github.com/JuliaLang/julia/pull/56196">#56196</a><a data-pjax="true" title="Mark `require_one_based_indexing` and `has_offset_axes` as public (#56196) The discussion here mentions `require_one_based_indexing` being part of the public API: https://github.com/JuliaLang/julia/pull/43263 Both functions are also documented (albeit in the dev docs): * `require_one_based_indexing`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#man-custom-indices * `has_offset_axes`: https://docs.julialang.org/en/v1/devdocs/offset-arrays/#For-objects-that-mimic-AbstractArray-but-are-not-subtypes Towards https://github.com/JuliaLang/julia/issues/51335. --------- Co-authored-by: Matt Bauman &lt;mbauman@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqtt5rab:-loading-announcement show-description-b81e33f" aria-labelledby="show-description-b81e33f"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for b81e33f" role="tooltip" aria-hidden="true" id="show-description-b81e33f">Show description for b81e33f</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="adrhill" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/20258504?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/adrhill/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="mbauman" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/154641?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/mbauman/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=adrhill" aria-label="commits by adrhill" data-hovercard-url="/users/adrhill/hovercard">adrhill</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=mbauman" aria-label="commits by mbauman" data-hovercard-url="/users/mbauman/hovercard">mbauman</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqtt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nerqtt5rab:-loading-announcement" href="/JuliaLang/julia/commit/b81e33fe522f8a8f060f885f83944f11192cd0db"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">b81e33f</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqtt5rab:-loading-announcement" aria-labelledby=":R17erqtt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for b81e33f" aria-hidden="true" id=":R17erqtt5rab:">Copy full SHA for b81e33f</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-b81e33f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-b81e33f" href="/JuliaLang/julia/blob/b81e33fe522f8a8f060f885f83944f11192cd0db/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-b81e33f" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-b81e33f" href="/JuliaLang/julia/tree/b81e33fe522f8a8f060f885f83944f11192cd0db" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Ratt5rab:-list-view-node-:Rvqtt5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="support `isless` for zero-dimensional `AbstractArray`s (#55772) Fixes #55771" class="color-fg-default" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab">support</a> <code><a data-pjax="true" title="support `isless` for zero-dimensional `AbstractArray`s (#55772) Fixes #55771" class="color-fg-default" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab">isless</a></code> <a data-pjax="true" title="support `isless` for zero-dimensional `AbstractArray`s (#55772) Fixes #55771" class="color-fg-default" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab">for zero-dimensional</a> <code><a data-pjax="true" title="support `isless` for zero-dimensional `AbstractArray`s (#55772) Fixes #55771" class="color-fg-default" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab">AbstractArray</a></code><a data-pjax="true" title="support `isless` for zero-dimensional `AbstractArray`s (#55772) Fixes #55771" class="color-fg-default" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab">s (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2525890497" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/55772" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/55772/hovercard" href="https://github.com/JuliaLang/julia/pull/55772">#55772</a><a data-pjax="true" title="support `isless` for zero-dimensional `AbstractArray`s (#55772) Fixes #55771" class="color-fg-default" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6vqtt5rab:-loading-announcement show-description-b38fde1" aria-labelledby="show-description-b38fde1"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for b38fde1" role="tooltip" aria-hidden="true" id="show-description-b38fde1">Show description for b38fde1</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/nsajko" data-testid="avatar-icon-link" data-hovercard-url="/users/nsajko/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="nsajko" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/4944410?v=4&amp;size=32" data-testid="github-avatar" aria-label="nsajko"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=nsajko" aria-label="commits by nsajko" data-hovercard-url="/users/nsajko/hovercard">nsajko</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnevqtt5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nevqtt5rab:-loading-announcement" href="/JuliaLang/julia/commit/b38fde1ad42c977878d4f481c962b108a3ae20ab"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">b38fde1</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7evqtt5rab:-loading-announcement" aria-labelledby=":R17evqtt5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for b38fde1" aria-hidden="true" id=":R17evqtt5rab:">Copy full SHA for b38fde1</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-b38fde1" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-b38fde1" href="/JuliaLang/julia/blob/b38fde1ad42c977878d4f481c962b108a3ae20ab/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-b38fde1" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-b38fde1" href="/JuliaLang/julia/tree/b38fde1ad42c977878d4f481c962b108a3ae20ab" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Red5rab:" data-testid="commit-group-title">Commits on Oct 17, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raud5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Red5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raud5rab:-list-view-node-:Rnqud5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add a convenience object for expressing once-like / per-runtime patterns (#55793) This adds 3 new types, to conveniently express 3 common concurrent code patterns: - `PerProcess`: an action that must be taken once per process - `PerThread`: an action that must be taken once per thread id - `PerTask`: an action that must be take once per task object The PerProcess object should replace `__init__` or similar hand rolled implementations of this. The PerThread object should replace code that used to use `nthreads()` to implement a much less correct version of this (though this is not recommended in most new code, some foreign libraries may need this to interact well with C). The PerTask object is simply a thin wrapper over `task_local_storage()`." class="color-fg-default" href="/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50">Add a convenience object for expressing once-like / per-runtime patterns (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2531296063" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/55793" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/55793/hovercard" href="https://github.com/JuliaLang/julia/pull/55793">#55793</a><a data-pjax="true" title="Add a convenience object for expressing once-like / per-runtime patterns (#55793) This adds 3 new types, to conveniently express 3 common concurrent code patterns: - `PerProcess`: an action that must be taken once per process - `PerThread`: an action that must be taken once per thread id - `PerTask`: an action that must be take once per task object The PerProcess object should replace `__init__` or similar hand rolled implementations of this. The PerThread object should replace code that used to use `nthreads()` to implement a much less correct version of this (though this is not recommended in most new code, some foreign libraries may need this to interact well with C). The PerTask object is simply a thin wrapper over `task_local_storage()`." class="color-fg-default" href="/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6nqud5rab:-loading-announcement show-description-d36417b" aria-labelledby="show-description-d36417b"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for d36417b" role="tooltip" aria-hidden="true" id="show-description-d36417b">Show description for d36417b</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/vtjnash" data-testid="avatar-icon-link" data-hovercard-url="/users/vtjnash/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="vtjnash" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/330950?v=4&amp;size=32" data-testid="github-avatar" aria-label="vtjnash"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=vtjnash" aria-label="commits by vtjnash" data-hovercard-url="/users/vtjnash/hovercard">vtjnash</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnenqud5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nenqud5rab:-loading-announcement" href="/JuliaLang/julia/commit/d36417b8230f7f56359f8607495ec97247bcab50"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">d36417b</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7enqud5rab:-loading-announcement" aria-labelledby=":R17enqud5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for d36417b" aria-hidden="true" id=":R17enqud5rab:">Copy full SHA for d36417b</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-d36417b" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-d36417b" href="/JuliaLang/julia/blob/d36417b8230f7f56359f8607495ec97247bcab50/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-d36417b" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-d36417b" href="/JuliaLang/julia/tree/d36417b8230f7f56359f8607495ec97247bcab50" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Raud5rab:-list-view-node-:Rrqud5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Limit implicit `show` in REPL to printing 20 KiB by default (#53959) closes https://github.com/JuliaLang/julia/issues/40735 --------- Co-authored-by: Jameson Nash &lt;vtjnash@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630">Limit implicit</a> <code><a data-pjax="true" title="Limit implicit `show` in REPL to printing 20 KiB by default (#53959) closes https://github.com/JuliaLang/julia/issues/40735 --------- Co-authored-by: Jameson Nash &lt;vtjnash@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630">show</a></code> <a data-pjax="true" title="Limit implicit `show` in REPL to printing 20 KiB by default (#53959) closes https://github.com/JuliaLang/julia/issues/40735 --------- Co-authored-by: Jameson Nash &lt;vtjnash@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630">in REPL to printing 20 KiB by default (</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2226664056" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/53959" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/53959/hovercard" href="https://github.com/JuliaLang/julia/pull/53959">#53959</a><a data-pjax="true" title="Limit implicit `show` in REPL to printing 20 KiB by default (#53959) closes https://github.com/JuliaLang/julia/issues/40735 --------- Co-authored-by: Jameson Nash &lt;vtjnash@gmail.com&gt;" class="color-fg-default" href="/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6rqud5rab:-loading-announcement show-description-6b95ac0" aria-labelledby="show-description-6b95ac0"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 6b95ac0" role="tooltip" aria-hidden="true" id="show-description-6b95ac0">Show description for 6b95ac0</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><span data-avatar-count="3" data-responsive="" class="Box-sc-g0xbh4-0 pc-AvatarStack--three prc-AvatarStack-AvatarStack-N-r3C" style="--stackSize-narrow:16px;--stackSize-regular:16px;--stackSize-wide:16px"><div class="pc-AvatarStackBody prc-AvatarStack-AvatarStackBody-mSyoJ" tabindex="0"> <img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="ericphanson" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/5846501?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/ericphanson/hovercard"/><img data-component="Avatar" class="pc-AvatarItem prc-AvatarStack-AvatarItem-nS1mt prc-Avatar-Avatar-ZRS-m" alt="vtjnash" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/330950?v=4&amp;size=32" data-testid="commit-stack-avatar" data-hovercard-url="/users/vtjnash/hovercard"/></div></span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=ericphanson" aria-label="commits by ericphanson" data-hovercard-url="/users/ericphanson/hovercard">ericphanson</a></div><span class="pl-1">and</span><div data-testid="author-link" class="Box-sc-g0xbh4-0 iCHGgS"><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=vtjnash" aria-label="commits by vtjnash" data-hovercard-url="/users/vtjnash/hovercard">vtjnash</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnerqud5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nerqud5rab:-loading-announcement" href="/JuliaLang/julia/commit/6b95ac0163e6fa77e5167d33e6d23198a381a630"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">6b95ac0</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7erqud5rab:-loading-announcement" aria-labelledby=":R17erqud5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 6b95ac0" aria-hidden="true" id=":R17erqud5rab:">Copy full SHA for 6b95ac0</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-6b95ac0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-6b95ac0" href="/JuliaLang/julia/blob/6b95ac0163e6fa77e5167d33e6d23198a381a630/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-6b95ac0" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-6b95ac0" href="/JuliaLang/julia/tree/6b95ac0163e6fa77e5167d33e6d23198a381a630" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li><li id=":Raud5rab:-list-view-node-:Rvqud5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="Add news entry for `matprod_dest` (#56160) This was missed out in https://github.com/JuliaLang/julia/pull/55537" class="color-fg-default" href="/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899">Add news entry for</a> <code><a data-pjax="true" title="Add news entry for `matprod_dest` (#56160) This was missed out in https://github.com/JuliaLang/julia/pull/55537" class="color-fg-default" href="/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899">matprod_dest</a></code> <a data-pjax="true" title="Add news entry for `matprod_dest` (#56160) This was missed out in https://github.com/JuliaLang/julia/pull/55537" class="color-fg-default" href="/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899">(</a><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2586212855" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/julia/issues/56160" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/julia/pull/56160/hovercard" href="https://github.com/JuliaLang/julia/pull/56160">#56160</a><a data-pjax="true" title="Add news entry for `matprod_dest` (#56160) This was missed out in https://github.com/JuliaLang/julia/pull/55537" class="color-fg-default" href="/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899">)</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R3h6vqud5rab:-loading-announcement show-description-4329422" aria-labelledby="show-description-4329422"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for 4329422" role="tooltip" aria-hidden="true" id="show-description-4329422">Show description for 4329422</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/jishnub" data-testid="avatar-icon-link" data-hovercard-url="/users/jishnub/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="jishnub" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/10461665?v=4&amp;size=32" data-testid="github-avatar" aria-label="jishnub"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=jishnub" aria-label="commits by jishnub" data-hovercard-url="/users/jishnub/hovercard">jishnub</a></div><span class="pl-1">authored</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rnevqud5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R2nevqud5rab:-loading-announcement" href="/JuliaLang/julia/commit/4329422fac14ae4daf0a2fd3c71fe4e0df169899"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">4329422</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rf7evqud5rab:-loading-announcement" aria-labelledby=":R17evqud5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for 4329422" aria-hidden="true" id=":R17evqud5rab:">Copy full SHA for 4329422</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-4329422" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-4329422" href="/JuliaLang/julia/blob/4329422fac14ae4daf0a2fd3c71fe4e0df169899/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-4329422" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-4329422" href="/JuliaLang/julia/tree/4329422fac14ae4daf0a2fd3c71fe4e0df169899" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 cnGFCU Timeline-Item prc-Timeline-TimelineItem-Sd-t-"><div class="prc-Timeline-TimelineBadgeWrapper-75vYD"><div class="Box-sc-g0xbh4-0 bTxOwE prc-Timeline-TimelineBadge-BqMiN"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-commit Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></div></div><div class="mt-0 prc-Timeline-TimelineBody-WWZY0"><h3 class="text-normal f5 py-1 prc-Heading-Heading-6CmGO" id=":Ret5rab:" data-testid="commit-group-title">Commits on Oct 15, 2024</h3><div class="color-bg-default position-relative border rounded-2 color-border-default mt-2 d-flex flex-column CommitGroup-module__panel--tvFMx"><div id=":Raut5rab:-list-view-container" class="ListView-module__container--zF6wW"><ul class="ListView-module__ul--vMLEZ" aria-labelledby=":Ret5rab:" tabindex="-1" role="list" data-listview-component="items-list"><li id=":Raut5rab:-list-view-node-:Rfqut5rab:" class="ListItem-module__listItem--kHali CommitRow-module__ListItem_0--PkFAi" tabindex="-1" aria-label="More information available below." data-testid="commit-row-item" data-commit-link="/JuliaLang/julia/commit/dbbd4d96fd560b41db2324ee31fd37eb734fa39e"><div class="Title-module__container--l9xi7 CommitRow-module__ListItemTitle_0--g9uVv"><h4 class="markdown-title Title-module__heading--upUxW CommitRow-module__ListItemTitle_0--g9uVv"><span class="TitleHeader-module__inline--rL27T Title-module__anchor--SyQM6 Title-module__markdown--KiFgL prc-Text-Text-0ima0" anchorRef="[object Object]"><a data-pjax="true" title="improve OncePer implementation Address reviewer feedback, add more fixes and more tests, rename to add Once prefix." class="color-fg-default" href="/JuliaLang/julia/commit/dbbd4d96fd560b41db2324ee31fd37eb734fa39e">improve OncePer implementation</a></span></h4><span class="Title-module__trailingBadgesContainer--XGsbF"></span><button data-component="IconButton" type="button" data-testid="commit-row-show-description-button" aria-pressed="false" aria-expanded="false" class="prc-Button-ButtonBase-c50BI Button Button--iconOnly Button--invisible Button--small ml-1 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R1ojfqut5rab:-loading-announcement show-description-dbbd4d9" aria-labelledby="show-description-dbbd4d9"><svg aria-hidden="true" focusable="false" class="octicon octicon-ellipsis" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25ZM12 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0ZM4 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Show description for dbbd4d9" role="tooltip" aria-hidden="true" id="show-description-dbbd4d9">Show description for dbbd4d9</span></div><div class="px-1"></div><div class="MainContent-module__container--ry4iL"><div class="MainContent-module__inner--bU_tk"><div class="Description-module__container--b3n6F"><div class="Box-sc-g0xbh4-0 dpBUfI"><div data-testid="author-avatar" class="Box-sc-g0xbh4-0 hKWjvQ"><a class="prc-Link-Link-85e08" href="/vtjnash" data-testid="avatar-icon-link" data-hovercard-url="/users/vtjnash/hovercard"><img data-component="Avatar" class="Box-sc-g0xbh4-0 bbHsCC prc-Avatar-Avatar-ZRS-m" alt="vtjnash" width="16" height="16" style="--avatarSize-regular:16px" src="https://avatars.githubusercontent.com/u/330950?v=4&amp;size=32" data-testid="github-avatar" aria-label="vtjnash"/></a><a class="Box-sc-g0xbh4-0 jRhDJg prc-Link-Link-85e08" data-muted="true" muted="" href="/JuliaLang/julia/commits?author=vtjnash" aria-label="commits by vtjnash" data-hovercard-url="/users/vtjnash/hovercard">vtjnash</a></div><span class="pl-1">committed</span><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 irPhWZ irithh d-none d-sm-flex ml-1" width="60px"></div><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 fIQuDd irOdmh d-none d-sm-flex ml-2" width="20px"></div><div class="d-none d-sm-flex"></div></div></div></div></div><div class="MetadataContainer-module__container--lj6YE"><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx"></div><div class="Metadata-module__metadata--yvrod Metadata-module__secondary--zMgLx CommitRow-module__ListItemMetadata_0--MUr_4"><div class="Box-sc-g0xbh4-0 LoadingSkeleton-sc-695d630a-0 dNbsEP ihfxfT d-none d-sm-flex" width="62px"></div></div><div class="Metadata-module__metadata--yvrod Metadata-module__primary--cJgJU d-none d-sm-flex px-0 gap-2"><div class="d-flex"><span role="tooltip" aria-label="View commit details" id=":Rbnfqut5rab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-s"><a sx="[object Object]" style="--button-color:fg.muted" type="button" class="Box-sc-g0xbh4-0 gPcybk prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R1bnfqut5rab:-loading-announcement" href="/JuliaLang/julia/commit/dbbd4d96fd560b41db2324ee31fd37eb734fa39e"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">dbbd4d9</span></span></a></span><div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":R7jnfqut5rab:-loading-announcement" aria-labelledby=":Rjnfqut5rab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="s" aria-label="Copy full SHA for dbbd4d9" aria-hidden="true" id=":Rjnfqut5rab:">Copy full SHA for dbbd4d9</span></div></div><span role="tooltip" aria-label="View code at this point" id="view-code-dbbd4d9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="view-code-dbbd4d9" href="/JuliaLang/julia/blob/dbbd4d96fd560b41db2324ee31fd37eb734fa39e/NEWS.md" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-view-code"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span><span role="tooltip" aria-label="Browse repository at this point" id="browse-repo-dbbd4d9" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-sw"><a aria-labelledby="browse-repo-dbbd4d9" href="/JuliaLang/julia/tree/dbbd4d96fd560b41db2324ee31fd37eb734fa39e" class="Button Button--iconOnly Button--invisible Button--small" data-testid="commit-row-browse-repo"><svg aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></a></span></div></div><!--$!--><template></template><!--/$--></li></ul></div></div></div></div></div></div></div><h2 class="sr-only prc-Heading-Heading-6CmGO">Pagination</h2><div class="d-flex flex-justify-center mt-2"><div class="Box-sc-g0xbh4-0 prc-ButtonGroup-ButtonGroup-vcMeG"><div><a sx="[object Object]" aria-disabled="true" style="--button-color:primer.fg.disabled" type="button" tabindex="0" data-testid="pagination-prev-button" class="Box-sc-g0xbh4-0 cQAMJB prc-Button-ButtonBase-c50BI fgColor-accent text-normal" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":R39rab:-loading-announcement" href="/JuliaLang/julia/commits/master/NEWS.md?before=13311f324e850fefddfcdf43d6c93b9365e2cf46+0"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Previous</span></span></a></div><div><a type="button" tabindex="0" data-testid="pagination-next-button" class="prc-Button-ButtonBase-c50BI fgColor-accent text-normal" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":R59rab:-loading-announcement" href="/JuliaLang/julia/commits/master/NEWS.md?after=13311f324e850fefddfcdf43d6c93b9365e2cf46+34"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Next</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-right Octicon-sc-9kayk9-0 fgColor-accent" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><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></span></span></a></div></div></div></div></div><div class="Box-sc-g0xbh4-0"></div></div></div></div></div> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-app> </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 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <span> &copy; 2025 GitHub,&nbsp;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="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" 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="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" 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="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" 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="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}" > 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="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}" > 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>

Pages: 1 2 3 4 5 6 7 8 9 10